【发布时间】:2020-07-28 22:18:45
【问题描述】:
在 R 中工作。我有 9 个数据框,它们都共享一个我想加入的公共 ID。通常我会使用只有 2 个 dfs 的 inner_join,但使用 9 会稍微复杂一些(而且我不擅长 R)。有什么建议吗?
【问题讨论】:
标签: r dataframe inner-join
在 R 中工作。我有 9 个数据框,它们都共享一个我想加入的公共 ID。通常我会使用只有 2 个 dfs 的 inner_join,但使用 9 会稍微复杂一些(而且我不擅长 R)。有什么建议吗?
【问题讨论】:
标签: r dataframe inner-join
我们可以将它带入list,然后将inner_join与reduce一起使用
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 中,这可以通过merge 和Reduce 完成
Reduce(function(...) merge(..., by = 'ID'), lst1)
【讨论】:
reduce 步骤
df1、df2、df3、df4、df5、df6、df7、df8、df9,然后是lst1 <- list(df1, df2, df3, df4, df5, df6, df7, df8, df9),然后使用reduce(lst1, inner_join, by = 'ID')