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

如何在R中按多列合并多个data frame?

多数据框多列合并解决方案

要实现多列匹配合并多个数据框,只需调整full_join的by参数为包含所有匹配列的向量即可,无需改动整体的reduce逻辑,具体操作如下:

步骤1:指定所有匹配列

先把需要用来匹配的列名整理成字符向量,比如你需要按Facility.ID、Facility.Name、State三列匹配,就定义:

match_cols <- c("Facility.ID", "Facility.Name", "State")

注意:要确保所有数据框中这些列的列名完全一致,且数据类型相同(比如都是字符型或数值型),避免匹配失败。

步骤2:修改合并代码

将原代码中的by="Facility.ID"替换为上面定义的向量,完整代码如下:

library(dplyr)
library(purrr)

merge_data1 <- list(hos_2015_data, hos_2016_data, hos_2017_data, 
                    hos_2018_data, hos_2019_data, hos_2020_data, hos_2021_data)

merged_result1 <- merge_data1 %>%
  reduce(full_join, by = match_cols)

View(merged_result1)

reduce会依次将列表中的每个数据框与之前合并的结果执行full_join,这样就能按指定多列把所有数据框的行合并到一起,同时保留所有行(无论某个数据框是否有对应匹配项)。

额外实用技巧

  • 若不确定哪些列是所有数据框共有的,可以用Reduce+intersect批量获取:
    # 提取所有数据框的共同列名
    common_cols <- Reduce(intersect, lapply(merge_data1, colnames))
    # 从共同列中筛选需要用来匹配的列
    match_cols <- common_cols[c("Facility.ID", "Facility.Name")] # 按需选择
    
  • 合并后若出现重复列(不同数据框中同列名但值不同),full_join会自动添加.x、.y后缀,你也可以通过suffix参数自定义后缀,比如suffix = c("_prev", "_curr"),不过多数据框依次合并时,后缀会按合并顺序生成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 12:56:18