我是新的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第二个数据文件如下所示
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匹配但年份不匹配,新行将为val2和年份添加相同的ID,同时保留val1和val3作为NA。
然后,我尝试只按ID合并,然后删除行(如果是yal.x != yy.y),但是由于数据集太大,所以效率不高。
发布于 2021-10-08 13:39:20
merge有一个参数all,该参数指定是否要保留左和右侧的所有行(即x中的所有行和y中的所有行)。
total <- merge(df1,df2,by=c("id","year"), all=TRUE)发布于 2021-10-08 13:37:58
必须指定all.x=TRUE和all.y=TRUE,这样才能保留两个数据集中的所有唯一行。
total <- merge(df1,df2,by=c("id","year"),all.x=TRUE,all.y=TRUE)https://stackoverflow.com/questions/69496732
复制相似问题