r语言 - 基于其他两列与另一个日期框架的匹配更新一列



我在R中有两个数据帧:一个大的和一个小的。大数据框架的结构如下:

ID Date value1 value2
1  Aug  1      2
1  Sep  1      3
2  Aug  3      2
2  Sep  4      3

小的是这样的:

ID Date value1
1  Aug  2        
2  Aug  5     

大数据框架包含小数据框架的所有列名,甚至更多。小的有一些关于value1的新值。所以我的任务是根据IDDate与小数据框的匹配来更新大数据框的value1。因此,生成的数据帧应该是这个

ID Date value1 value2
1  Aug  2      2
1  Sep  1      3
2  Aug  5      2
2  Sep  4      3

你知道怎么做吗?

使用data.table,我们可以将on与两个数据集中的IDDate列连接起来,并将i.value1中的元素(:=)分配给第一个数据集(df1)中的value1

library(data.table)
setDT(df1)[df2, value1 := i.value1, on = .(ID, Date)]
df1
#   ID Date value1 value2
#1:  1  Aug      2      2
#2:  1  Sep      1      3
#3:  2  Aug      5      2
#4:  2  Sep      4      3

通过将i.放在value1前面,您表明data.table必须从value1的数据帧df2中获取值。

可以通过dput()共享数据吗?


也许,像这样的东西应该工作吗?
df2[match(df1$ID, df2$ID) & match(df1$Date, df2$Date),'value1']

最新更新