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

R语言中合并多份data.frame并保留主表未匹配行的问题

R语言多表合并的正确实现方案

你的问题出在merge()函数仅支持两两合并,直接传入三个data.frame会导致逻辑错误,无法实现预期的左连接效果。以下是两种可靠的解决方法:

基础R分步合并法

通过两次调用merge()完成合并,全程保留A的所有行:

# 第一步:合并A与B,保留A的全部ID
merge_ab <- merge(A, B, by = "ID", all.x = TRUE)
# 第二步:将合并结果与C合并,保留原A的全部ID并按ID排序
final_data <- merge(merge_ab, C, by = "ID", all.x = TRUE, sort = TRUE)

dplyr 简洁实现法

如果使用tidyverse生态的dplyr包,left_join()可以更直观地完成左连接,配合管道符串联操作:

# 若未安装dplyr,先执行 install.packages("dplyr")
library(dplyr)

final_data <- A %>%
  left_join(B, by = "ID") %>%  # 左连接A和B,保留A的所有行
  left_join(C, by = "ID") %>%  # 继续左连接C,保留原A的所有行
  arrange(ID)  # 按ID排序

两种方法都会保留A中所有ID,即使该ID在B或C中无匹配项,对应列会填充为NA,最终结果按ID有序排列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 17:02:05