3

我已将 3 个不同文件中的数据读入 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 列合并的如下输出: 在此处输入图像描述

非常感谢任何帮助。谢谢。

4

3 回答 3

3

用于Reduce将多个数据框合并在一起。一件烦人的事情Reduce是它恰好传递了底层函数 2 个参数,所以你必须解决这个问题。

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

Reduce(mymerge, list(df1, df2, df3))
于 2013-06-22T05:46:16.863 回答
2

库(数据表)

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]]
于 2013-06-22T11:24:37.607 回答
0

您是否尝试过此功能:

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

在链接中查看此代码:

out <- smartbind( list(df1, df2, ...))
于 2013-07-05T14:06:52.040 回答