2015-10-09 19 views
1

列添加只是特定行我有樹dataframes:如何在數據幀

a: 
     tag1 adj.P.Val1 DE1 
1  A1BG-AS1 0.9869732 0 
2  A2LD1 0.9924706 0 
3  A4GALT 0.9538785 0 

b: 
     tag2 adj.P.Val2 DE2 
1   A1BG 0.9734810 0 
2  A1BG-AS1 0.7790235 0 
3  A2LD1 0.4763385 0 

c: 
     tag3 adj.P.Val3 DE3 
1  A1BG-AS1 0.9742065 0 
2  A2LD1 0.2733337 0 
3   AAAS 0.2015485 0 

我想合併這些數據幀,這是非常重要,我與放置在同一個相同的「標籤」值的行在最終數據幀中的行:

tag1 adj.P.Val1 DE1 tag2 adj.P.Val2 DE2 tag3 adj.P.Val3 DE3 
1 NA   NA NA  A1BG  0.9734810 0 NA   NA  NA 
2 1BG-AS1 0.9869732 0  A1BG-AS1 0.7790235 0 A1BG-AS1 0.9742065 0 
3 A2LD1 0.9924706 0  A2LD1  0.4763385 0 A2LD1  0.2733337 0 
4 A4GALT 0.9538785 0  NA   NA  NA NA  NA  NA 
5 NA   NA NA  NA   NA  NA AAAS  0.2015485 0 

我該怎麼辦?

+1

你只需要使用'merge'與'了'和'B'和合並所產生的數據幀用'c'。沒有理由重複標籤,如果他們將是相同的。用'?merge'檢查'merge'文檔 – Bernardo

+0

你也可以勾選[here](http://stackoverflow.com/questions/33030756/merge-4-data-objects-with-different-columns-variables-in- R/33031393#33031393) – akrun

回答

2

這應該給你想你想:

# rename the id-columns & wrap put the datafrmes in a list 
lst <- lapply(list(a,b,c), function(x) {names(x)[1] <- "tag";x}) 
# merge the three separate dataframes into one 
df <- Reduce(function(...) merge(..., all = TRUE, by = "tag"), lst) 

這導致:

> df 
     tag adj.P.Val1 DE1 adj.P.Val2 DE2 adj.P.Val3 DE3 
1 A1BG-AS1 0.9869732 0 0.7790235 0 0.9742065 0 
2 A2LD1 0.9924706 0 0.4763385 0 0.2733337 0 
3 A4GALT 0.9538785 0   NA NA   NA NA 
4  A1BG   NA NA 0.9734810 0   NA NA 
5  AAAS   NA NA   NA NA 0.2015485 0