2013-05-21 59 views
0

我必须组合两个看起来像这样的数据帧 我想要在数据帧之间采用公共列并将它们连接在一起。 两个数据帧中的行将完全不同。根据公共列将R中的两个数据帧组合起来

 a b c 
row1 1 0 1  
row2 1 0 1 

另据帧

 d a c f 
row3 1 0 1 1 
row4 1 1 0 0 

我想最终的数据集看起来像这样

 a c 
row1 1 1 
row2 1 1 
row3 0 1 
row4 1 0 

来自两位dataframes

dput(x1) 
structure(list(d = c(1L, 1L), a = 0:1, c = c(1L, 0L), f = c(1L, 
0L)), .Names = c("d", "a", "c", "f"), row.names = c("row3", "row4" 
), class = "data.frame") 

dput(x2) 
structure(list(a = c(1L, 1L), b = c(0L, 0L), c = c(1L, 1L)), .Names = c("a", 
"b", "c"), row.names = c("row1", "row2"), class = "data.frame") 
+0

'merge' ........ – Thomas

回答

5

你可以得到的dput通用名称和然后使用行绑定:

common <- intersect(names(x1), names(x2)) 
rbind(x1[,common], x2[,common]) 
    a c 
row3 0 1 
row4 1 0 
row1 1 1 
row2 1 1 

编辑:为了匹配您期望的输出

rbind(x2[,common], x1[,common]) 
    a c 
row1 1 1 
row2 1 1 
row3 0 1 
row4 1 0 
+0

您好我只有一个疑问。如何在row1和row2之后一次打印row3和row4? –

1

一个非常基本的版本

> X <- merge(x1, x2, all=TRUE) 
> X[, which(colSums(!is.na(X))==nrow(X))] 
    a c 
1 0 1 
2 1 0 
3 1 1 
4 1 1 
相关问题