2013-03-08 58 views
1

我有三個獨立data.frames。三個data.frames具有相同的列數和相同的行數。另外他們有相同的列名。我試圖根據列名稱合併三個data.frames。我使用下面的代碼寫入合併兩個data.frames並返回匹配數。按列名合併3個data.frames

Merged_DF = sapply(names(DF1),function(n) nrow(merge(DF1, DF2, by=n))) 

問題是,雖然在這個例子中有兩個data.frames,在我的情況下,我有3個data.frames。 如何修改代碼以合併三個data.frames而不是兩個?我試圖修改字符串以這種方式簡單地添加第三data.frame,但它不工作:

Merged_DF = sapply(names(DF1),function(n) nrow(merge(DF1, DF2, DF3, by=n))) 

它返回以下錯誤:

Error in fix.by(by.x, x) : 'by' must specify column(s) as numbers, names or logical 

例:

DF1

G1 G2 G3 
    a b f 
    b c a 
    c d b 

DF2

G1 G2 G3 
    A b f 
    b c a 
    h M b 

DF3

G1 G2 G3 
    a b f 
    b l a 
    j M v 

data.frames有大約250行和50列。

+0

給了我們一個你的data.frames的例子,請。 – Arun 2013-03-08 10:23:54

回答

5

可以使用Reduce功能合併多個數據幀:

df_list <- list(DF1, DF2, DF3) 
Reduce(function(x, y) merge(x, y, all=TRUE), df_list, accumulate=FALSE) 

或者merge_recursereshape包:

library(reshape) 
data <- merge_recurse(df_list) 

又見將R維基:Merge data frames

+0

嗨,rcs,非常感謝!所有data.frames之間的匹配數是否可能?最後我想知道有多少項逐列,三個data.frames是shere。 – Elb 2013-03-08 11:16:52