【发布时间】:2021-11-28 11:09:01
【问题描述】:
我是 R 新手,有两个非常大的数据集要合并。它们如下所示
ID year val1 val3
1 1 2001 2 34
2 2 2004 1 25
3 3 2003 3 36
4 4 2003 2 46
5 5 1999 1 55
6 6 2005 3 44
第二个dataframe如下
ID year val2
1 1 2001 2
2 2 2004 1
3 3 2003 3
4 4 2002 5
5 5 1998 4
6 6 2004 6
我希望最终的合并集看起来像这样
ID year val1 val3 val2
1 1 2001 2 34 2
2 2 2004 1 25 1
3 3 2003 3 36 3
4 4 2002 NA NA 5
5 4 2003 2 46 NA
6 5 1998 NA NA 4
7 5 1999 1 55 NA
8 6 2004 NA NA 6
9 6 2005 3 44 NA
我尝试使用以下方法按 ID 和年份合并
total <- merge(df1,df2,by=c("id","year"))
但这只会在 ID 和年份都匹配时才会合并。我希望它发生,以便如果 ID 匹配但年份不匹配,则新行将在相同的 ID 中添加 year 和 val2 的条目,同时将 val1 和 val3 保留为 NA。
然后我尝试仅按 ID 合并,然后如果 year.x != year.y 则删除行,但由于数据集太大,效率不高。
【问题讨论】:
-
检查
?merge并阅读all参数 -
all完美运行。