简体   繁体   English

R-合并3个或更多数据帧

[英]R- merge 3 or more dataframes

I have read data from 3 different files into 3 different dataframes. 我已将数据从3个不同的文件读取到3个不同的数据帧中。 I have tried merge function but doesnot seem to give me the desired output. 我尝试了合并功能,但似乎没有给我想要的输出。 My dataframes are: 我的数据帧是:

df1: 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: 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: 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

I would like an output like the following which is merged by someID column: 我想要类似someID列合并的以下输出: 在此处输入图片说明

Any help is really appreciated.Thanks. 非常感谢您的任何帮助。

Use Reduce to merge multiple data frames together. 使用Reduce将多个数据帧合并在一起。 One annoying thing about Reduce is that it passes the underlying function exactly 2 arguments, so you have to work around that. Reduce一件令人讨厌的事情是,它恰好传递了基础函数2个参数,因此您必须解决该问题。

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

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

library(data.table) 库(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]]

Have you tried this function : 您是否尝试过此功能:

http://rss.acs.unt.edu/Rdoc/library/gtools/html/smartbind.html http://rss.acs.unt.edu/Rdoc/library/gtools/html/smartbind.html

See this code in the link: 请参阅链接中的以下代码:

out <- smartbind( list(df1, df2, ...))

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM