如何使用R语言的merge函数合并多份Excel文件匹配缺失批次号
R中使用merge函数匹配批次号操作指南
1 前期准备:读取所有Excel文件
首先加载读取Excel所需的包:
# 首次使用先安装 install.packages("readxl") # 加载包 library(readxl)
依次读取4份文件:
# 读取完整ID-批次对应表,替换为你自己的文件路径 df_master <- read_excel("你的完整对应表文件路径.xlsx") # 依次读取3份缺失批次号的文件,替换为你自己的文件路径 df1 <- read_excel("第一份缺失批次的文件路径.xlsx") df2 <- read_excel("第二份缺失批次的文件路径.xlsx") df3 <- read_excel("第三份缺失批次的文件路径.xlsx")
操作前确认:所有表中存储ID的列名完全一致(比如都命名为ID),如果不一致需要先修改为相同列名
2 使用merge函数匹配批次号
merge函数核心逻辑是基于共同列(这里就是ID列),把两个表的信息合并,我们需要保留所有缺失批次表的原有行,只补充批次号信息,参数设置如下:
| 参数 | 含义 |
|---|---|
| x | 要补充批次号的目标表(即3份缺失批次的表) |
| y | 存储完整ID-批次对应关系的主表 |
| by | 两个表用于匹配的共同列名 |
| all.x | 设为TRUE,保留x表的所有行,避免原数据丢失 |
匹配示例代码
# 给第一份表匹配批次号 df1_result <- merge(x = df1, y = df_master, by = "ID", all.x = TRUE) # 给第二份表匹配批次号 df2_result <- merge(x = df2, y = df_master, by = "ID", all.x = TRUE) # 给第三份表匹配批次号 df3_result <- merge(x = df3, y = df_master, by = "ID", all.x = TRUE)
3 常见问题处理
- 匹配后出现重复行:先检查主表
df_master是否存在重复ID,一个ID对应多个批次的情况下会生成多条匹配结果 - 匹配后批次号全为NA:说明两个表的ID列格式不一致(比如一个是数字格式、一个是文本格式),统一格式后重新匹配即可,示例:
# 把两个表的ID都统一为字符格式 df1$ID <- as.character(df1$ID) df_master$ID <- as.character(df_master$ID)
- 需要合并三个匹配完成的表:如果三个表列结构完全一致,直接用
rbind合并即可:
total_result <- rbind(df1_result, df2_result, df3_result)
4 导出结果
可以用writexl包导出为Excel文件:
# 首次使用先安装 install.packages("writexl") library(writexl) # 单个导出 write_xlsx(df1_result, "第一份表匹配完成.xlsx") # 导出合并后的总表 write_xlsx(total_result, "所有数据匹配完成总表.xlsx")
内容的提问来源于stack exchange,提问作者Newb
相关产品推荐
相关产品推荐

