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

如何通过迭代函数一步完成R语言多xls数据集导入及正确合并?

错误原因

你直接调用purrr::map_df()对所有6个文件做行绑定,不符合你原有处理逻辑,存在两个核心问题:

  • 带M和带N的数据集列结构不一致,直接行绑会自动补全缺失列为NA,数据结构完全混乱
  • 你原有逻辑是同标识(M/N)的3个文件先行合并,再按公共主键做关联合并,全量行绑没有实现关联匹配的步骤

调整后代码

可实现一步导入+符合你原有逻辑的合并:

library(tidyverse)
library(readxl)

final_data <- list.files(pattern = "^AA.*\\.xls$") %>%
  # 构造文件路径和分组标识映射表
  tibble(file_path = .) %>%
  mutate(group_flag = str_extract(file_path, "AA-([MN])-", group = 1)) %>%
  # 同分组内先行合并
  group_by(group_flag) %>%
  summarise(group_data = list(map_df(file_path, read_excel))) %>%
  # 拆分两组数据后按公共主键关联
  pivot_wider(names_from = group_flag, values_from = group_data) %>%
  { inner_join(.$M[[1]], .$N[[1]], by = c("SAMPLE", "GROUP", "SESSION", "CATEGORY")) }

注意事项

  • 如果M和N表的主键列名不一致,需要修改inner_join的by参数为键值对格式,例如by = c("GP" = "GROUP", "BLOCK" = "SESSION"),保证列名一一对应
  • 若你需要保留未匹配的行,可将inner_join替换为full_join/left_join/right_join匹配你的合并需求

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 23:27:04