2013-06-22 41 views
2

我已經從3個不同的文件讀取數據到3個不同的數據幀。我試過合併功能,但似乎沒有給我所需的輸出。 我dataframes是:R合併3個或更多的數據幀

DF1:

someName someMOD someID 
A T754(P),M691(O),S692(P),S694(P),S739(P),S740(P),S759(P),S762(P) 1 
B S495(P) 2 
C S162(P),Q159(D) 3 
D S45(P),C47(C),S48(P),S26(P) 4 
E S18(P) 5 

DF2:

someName someMOD someID 
C S162(P),Q159(D) 3 
D S45(P),C47(C),S48(P),S26(P) 4 
F S182(P) 6 
E S18(P) 5 
Z Q100(P) 9 
A T754(P),M691(O),S694(P),S739(P),S740(P) 1 

DF3:

someName someMOD someID 
A T754(P),M691(O),S692(P),S694(P),S739(P),S740(P),S759(P) 1 
B S495(P) 2 
D S45(P),C47(C),S48(P),S26(P) 4 
E S18(P) 5 
F S182(P) 6 
L Z182(P) 8 
C S162(P),Q159(D) 3 

我想就像是由someID列合併了以下內容的輸出: enter image description here

任何幫助真的很感激。謝謝。

回答

3

使用Reduce將多個數據幀合併在一起。關於Reduce的一個令人討厭的事情是它傳遞了底層函數正好兩個參數,所以你必須解決這個問題。

mymerge <- function(x, y) 
merge(x, y, by=c("someName", "someID"), all=TRUE)) 

Reduce(mymerge, list(df1, df2, df3)) 
+0

我的列表的數據幀長度不同,s o我收到一個錯誤。你確定這適用於我的情況嗎?謝謝 – RnD

2

庫(data.table)

dt1 <- data.table(df1, key="someName,someID") 
dt2 <- data.table(df2, key="someName,someID") 
dt3 <- data.table(df3, key="someName,someID") 

DT <- dt1[dt2[dt3]]