【问题标题】:R- merge 3 or more dataframesR-合并3个或更多数据帧
【发布时间】:2013-06-22 05:39:16
【问题描述】:

我已将 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 列合并的如下输出:

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

【问题讨论】:

    标签: r merge dataframe


    【解决方案1】:

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

    mymerge <- function(x, y)
    merge(x, y, by=c("someName", "someID"), all=TRUE))
    
    Reduce(mymerge, list(df1, df2, df3))
    

    【讨论】:

    • 我的数据框列表长度不同,所以我收到错误消息。你确定这对我的情况有用吗?谢谢
    【解决方案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]]
    

    【讨论】:

      【解决方案3】:

      你试过这个功能吗:

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

      在链接中查看此代码:

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

      【讨论】:

        猜你喜欢
        • 2017-01-15
        • 1970-01-01
        • 2020-10-15
        • 2014-04-14
        • 1970-01-01
        • 2020-07-28
        • 2013-01-03
        • 1970-01-01
        • 2019-03-29
        相关资源
        最近更新 更多