【问题标题】:R replace value in dataframeR替换数据框中的值
【发布时间】:2020-04-06 13:19:35
【问题描述】:

我有一个数据框,其中包含一些变量、datem、seriesid 和 price。

对于给定的 seriesid,例如series 1000 我想在某个日期更改价格(注意 datem = year(date)*12 + month(date))。

我试过了:

df$price[df$seriesid==114051 & ((df$datem == (1888*12+4))||(df$datem==(1888*12+3)))] <- 10.0

但是,这会将我所有的 datem 值替换为相同的 datem,并将我的所有 seriesids 替换为 114051。

有没有人有一种简单的方法来替换我的数据框中的特定值(它是一个大数据框)。

谢谢

【问题讨论】:

    标签: r dataframe


    【解决方案1】:

    如果您的数据集非常庞大,data.table 是一个不错的选择。借助 := 运算符,您可以使用条件替换(通过引用更新)

    library(data.table)
    setDT(df)
    
    df[id==114051 & (datem %in% c(1888*12+3, 1888*12+4))], price := 10.0]
    

    dplyr 等效解决方案是:

    library(dplyr)
    df %>% mutate(price = if_else(id==114051 & (datem %in% c(1888*12+3, 1888*12+4)), 10, price)
    

    可能比第一种解决方案要慢

    【讨论】:

    • 嗨 Lilog 感谢您的回答。由于双|,您的答案无效。现在起作用的是: x
    • 好的,我刚刚复制了您的逻辑条件。我建议您在我的编辑中使用%in% 解决方案,避免使用OR 运算符
    猜你喜欢
    • 2014-12-15
    • 2016-02-10
    • 2022-01-14
    • 1970-01-01
    • 2018-05-04
    • 1970-01-01
    • 2012-06-19
    • 2012-10-01
    • 2015-07-15
    相关资源
    最近更新 更多