You need to enable JavaScript to run this app. R语言如何基于指定数据框的公共id合并多个数据框
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何基于指定数据框的公共id合并多个数据框

R多数据框按指定id合并解决方案

正确实现代码

library(dplyr)
library(tidyr)

# 提取data3中作为筛选标准的id
target_ids <- unique(data3$id)

# 合并处理
combined <- list(data1 = data1, data2 = data2, data3 = data3) %>%
  # 合并所有数据框,新增source列标记数据来源
  bind_rows(.id = "source") %>%
  # 仅保留data3中存在的id对应的数据
  filter(id %in% target_ids) %>%
  # 补全每个id对应三个数据集的组合,缺失的x值自动填充NA
  complete(id, source) %>%
  # 按id、数据集来源排序,保证输出顺序和预期一致
  arrange(id, source) %>%
  # 移除不需要的source列
  select(id, x)

运行上述代码后,combined的输出和要求的预期结果完全一致:

id  x
1  1 10
2  1 NA
3  1 30
4  3 14
5  3 22
6  3 32

原代码错误原因

之前的代码存在两处核心问题:

  • bind_rows()的.id参数作用是为每个输入的数据框生成专属标识作为新列的值,会覆盖原有数据中的id列,完全不符合合并逻辑
  • 没有提前过滤掉data3中不存在的id(即id=2的所有记录),也没有补全每个目标id对应三个数据集的缺失值

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.17 14:27:05