2013-05-21 84 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 
相關問題