使用R中另一个数据帧的其他匹配ID替换数据框中的值

时间:2018-04-09 10:00:40

标签: r linux dataframe match

所以我在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

结果是一样的。 所以,如果你可以帮助我解决问题所在(无论是静音还是变异),那就太棒了。

1 个答案:

答案 0 :(得分:1)

df1$status[df1$ID %in% df2$ID] <- df2$status[df2$ID %in% df1$ID]

这个怎么样?您只需填写作业中的条件