【问题标题】:Join several dataframes together into one in R在 R 中将多个数据帧合并为一个
【发布时间】:2020-07-28 22:18:45
【问题描述】:

在 R 中工作。我有 9 个数据框,它们都共享一个我想加入的公共 ID。通常我会使用只有 2 个 dfs 的 inner_join,但使用 9 会稍微复杂一些(而且我不擅长 R)。有什么建议吗?

【问题讨论】:

    标签: r dataframe inner-join


    【解决方案1】:

    我们可以将它带入list,然后将inner_joinreduce一起使用

    library(dplyr)
    library(purrr)
    lst1 <- list(df1, df2, df3, ...., dfn)
    

    如果对象名称有一个模式,即 df 后跟一些数字,则可以更轻松地将其转换为 list

    lst1 <- mget(ls(pattern = '^df\\d+$'))
    reduce(lst1, inner_join, by = 'ID')
    

    base R 中,这可以通过mergeReduce 完成

    Reduce(function(...) merge(..., by = 'ID'), lst1)
    

    【讨论】:

    • 我看到这会创建一个列表,但我不确定我是否了解如何将列表中的所有内容组合起来创建一个新的数据框...您在缩减部分迷失了我
    • @mrm081 即reduce 步骤
    • 我不明白函数之后的第一个 ( ) 里面应该放什么,合并后应该放什么 ( , )
    • @mrm081 如果你有数据集df1df2、df3、df4、df5、df6、df7、df8、df9,然后是lst1 &lt;- list(df1, df2, df3, df4, df5, df6, df7, df8, df9),然后使用reduce(lst1, inner_join, by = 'ID')
    • 啊。我这样做了。很抱歉造成混乱,你很棒!
    猜你喜欢
    • 2020-03-03
    • 2017-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-31
    • 2013-11-13
    • 2022-07-20
    相关资源
    最近更新 更多