2016-08-23 85 views
1

我想加入根据第一个数据帧的列值像下面两个数据帧:不是“”不要紧,等栏目如何根据R中第一个数据帧的列值按行连接两个数据帧?

FIRST DATA FRAME : 
a b c d 
2 # # # 
3 # # # 

SECOND DATA FRAME : 
a b c d 
1 @ @ @ 
2 @ @ @ 
3 @ @ @ 
4 @ @ @ 
5 @ @ @ 

值。 输出应该是这样的:

a b c d 
2 # # # 
3 # # # 
2 @ @ @ 
3 @ @ @ 

我曾尝试合并,dplyr的连接,交叉等,但不能得到正确的结果。

回答

2

我会尝试一些简单的与rbind使用rbindintersect

rbind(df1, df2[df2$a %in% df1$a, ]) 
+0

如果'df1'有一个额外的排它不存在于'df2' –

3

的一种方式。 intersect将找出df1$adf2$a之间的共同元素。

common <- intersect(df1$a, df2$a) 
rbind(df1[df1$a %in% common, ], df2[df2$a %in% common, ], make.row.names = F) 

#a b c d 
#2 # # # 
#3 # # # 
#2 @ @ @ 
#3 @ @ @ 
+0

正要击中“后”这是行不通的: ) – Sotos

+0

哦......发生在每个人都在这么:) –

3

我想一个更多的品种:

subset(rbind(df1, df2), a %in% a[duplicated(a)]) 
# a b c d 
#1 2 # # # 
#2 3 # # # 
#4 2 @ @ @ 
#5 3 @ @ @ 
相关问题