2013-03-21 47 views
2

我想兩個表中的R結合起來,從而使生成的表將來自表1和2與數據幀2,行名

df1<-data.frame(Name = c("Gene_1", "Gene_2", "Gene_4", "Gene_3"), "1"=c(0,1,2,6), "2" = c(5,6,7,5), "3" = c(9,8,7,7), check.names=FALSE) 

> df1 

    Name 1 2 3 
1 Gene_1 0 5 9 
2 Gene_2 1 6 8 
3 Gene_4 2 7 7 
4 Gene_3 6 5 7 


df2<-data.frame(Name = c("Gene_2", "Gene_4", "Gene_5"), "1" = c(0,2,3), "2" = c(3,2,1), "3" = c(4,3,2), check.names=FALSE) 

> df2 

    Name 1 2 3 
1 Gene_2 0 3 4 
2 Gene_4 2 2 3 
3 Gene_5 3 1 2 

結果得到值的列追加數據幀1應該是這樣的:

1 Gene_1 0 5 9 NA NA NA 
2 Gene_2 1 6 8 0 3 4 
3 Gene_3 6 5 7 NA NA NA 
4 Gene_4 2 7 7 2 2 2 
5 Gene_5 NA NA NA 3 1 2 

我覺得必須有某種做,而不是循環的簡單的方法......輸出到任何順序列排序是不是必需的,我只是想確保正確的價值在正確的地方。我看了槽的論壇,但仍停留( 謝謝 貝絲

回答

4

merge讓你有:

merge(df1, df2, by='Name', all=TRUE) 

##  Name 1.x 2.x 3.x 1.y 2.y 3.y 
## 1 Gene_1 0 5 9 NA NA NA 
## 2 Gene_2 1 6 8 0 3 4 
## 3 Gene_3 6 5 7 NA NA NA 
## 4 Gene_4 2 7 7 2 2 3 
## 5 Gene_5 NA NA NA 3 1 2