也许,像这样的东西应该工作吗?
我在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的新值。所以我的任务是根据ID和Date与小数据框的匹配来更新大数据框的value1。因此,生成的数据帧应该是这个
ID Date value1 value2
1 Aug 2 2
1 Sep 1 3
2 Aug 5 2
2 Sep 4 3
你知道怎么做吗?
使用data.table
,我们可以将on
与两个数据集中的ID
和Date
列连接起来,并将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']