You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

R语言中如何一次性合并多个行数不同的data.frame?

R多数据框批量合并方案

你可以借助purrr包的reduce()函数批量迭代执行连接操作,无需手动编写多次两两连接代码,支持任意数量的数据框合并。

完整实现代码

# 加载依赖包(dplyr提供连接函数,purrr提供reduce迭代函数)
library(tidyverse)

# 示例数据
df1<-data.frame(s=c(1,2,3,4,5,6,7),
                x=c('a','b','c','d','e', 'f', 'g'))
df2<-data.frame(k=c(6,7,8,9),
                x=c('a','b','c','d'))
df3<-data.frame(y=c(10,11,12,13,14),
                x=c('f','g','h','i','j'),
                u=c(8,7,4,5,3))
df4<-data.frame(z=c(8,7,9,1,3,4,6,2),
                x=c('a','b','c','d','f','e','h', 'j'))
df_aaa<-data.frame(w=c(1000,500),
                x=c('a','b'))
ghj_df<-data.frame(q=c(36,32,31,35,34,34,31,35,36),
                x=c('a','b','c','d','e','f','g','h','j'))

# 1. 把所有需要合并的数据框放入列表
df_list <- list(df1, df2, df3, df4, df_aaa, ghj_df)

# 2. 迭代执行内连接,公共列为x
inner_result <- reduce(df_list, inner_join, by = "x")

# 如果需要全连接(保留所有行,缺失值填NA),替换为full_join即可
full_result <- reduce(df_list, full_join, by = "x")

结果说明

  • 内连接inner_join返回的是所有数据框的公共列x中都存在的观测,示例中只有x=a、x=b满足要求,最终得到2行7列的结果。
  • 全连接full_join返回所有x的取值,对应数据没有的字段填充NA,最终得到10行7列的结果。
  • 如果需要其他连接逻辑,替换inner_join为left_join、right_join即可;多公共列的场景下把by参数改为字符向量即可,例如by = c("id", "date")。

内容的提问来源于stack exchange,提问作者wesleysc352

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 06:15:00