所以我在R中遇到一个问题,就是使用第二个数据帧加上匹配的ID来更新主数据框中的值。
所以这里是数据文件演示: 首先,我有这样的主要数据:
df1 <- data.frame(ID = c("A1", "A2", "B1", "B2", "C1", "C2"),
year = 2000:2005, status = c("0","1","0","0","1","1"))
ID year status
A1 2000 0
A2 2001 1
B1 2002 0
B2 2003 0
C1 2004 1
C2 2005 1
第二个数据,我要替换&#34; status&#34;值进入主要数据。
df2 = data.frame(ID = c("A1", "B2","C1"), status = c("1", "1", "0"))
ID status
A1 1
B2 1
C1 0
最后所需的输出是这样的:
ID year status
A1 2000 1
A2 2001 1
B1 2002 0
B2 2003 1
C1 2004 0
C2 2005 1
如您所见,状态列现在使用第二个数据更新。 好吧,我尝试过合并/左连接,我无法获得解决方案,某些部分数据已更新,部分数据未更新。
这里给出了解决方案,主要是针对数据集,其中第二个数据集大于第一个数据集,我可以猜到最终有很多新的数据集。
还试过这段代码:
df1$status[df1$id %in% df2$id] <- df2$status
结果是一样的。 所以,如果你可以帮助我解决问题所在(无论是静音还是变异),那就太棒了。
答案 0 :(得分:1)
df1$status[df1$ID %in% df2$ID] <- df2$status[df2$ID %in% df1$ID]
这个怎么样?您只需填写作业中的条件