我在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
有关如何完成此任务的任何线索?
答案 0 :(得分:0)
使用data.table
,我们可以加入on
两个数据集中的ID
和Date
列,并为:=
中的元素分配i.value1
在第一个数据集(value1
)中转到df1
。
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
中获取值。
答案 1 :(得分:0)
可以通过df2[match(df1$ID, df2$ID) & match(df1$Date, df2$Date),'value1']
共享数据吗?
也许,这样的事情应该起作用?
{{1}}