2013-05-21 4 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 

같이 할 또 다른 dataframe 두 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

안녕을 일치 시키려면 그냥 한 번 더 의심을 가지고 있습니다. 행 1과 행 2 다음에 한 번 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 
관련 문제