首页 > 解决方案 > 合并和更新不存在的值

问题描述

我正在尝试合并两个数据框,这样如果 df1 的变量源中不存在任何列,则应该从 df2 的行中获取。我尝试了下面的合并,但没有奏效。请帮忙。

df1 <- data.frame(source = c("Pr1", "Pr2","Pr3"),
                     date = c("Jan 2018","Feb 2018","Mar 2018"),
                     Freq = c(100,20,30))
df2 <- data.frame(source = c("Pr1","Pr2","Pr1"),
                     date = c("Sep 2018","Aug 2018","Jan 2018"),
                     Freq = c(0,0,0))

df <- merge(df1,df2,by = c("source","date"))

预期输出:

  source     date Freq
1    Pr1 Jan 2018  100
2    Pr2 Feb 2018   20
3    Pr3 Mar 2018   30
4    Pr1 Sep 2018    0
5    Pr2 Aug 2018    0

标签: r

解决方案


也许你可以设置all = TRUE你使用merge和申请aggregate更新的时间,即

df <- aggregate(Freq~.,merge(df1,df2,all = TRUE),FUN = max)

这样

> df
  source     date Freq
1    Pr2 Feb 2018   20
2    Pr1 Jan 2018  100
3    Pr3 Mar 2018   30
4    Pr2 Aug 2018    0
5    Pr1 Sep 2018    0

推荐阅读