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

在R中如何导入多文件并依据文件名部分字段合并计算均值

R数据处理问题解决方案

1 批量导入多个.xlsx或.DAT格式文件

首先加载所需的文件读取和数据处理包:

# 首次使用先安装依赖包
install.packages(c("readxl", "tidyverse"))
# 加载包
library(readxl)
library(tidyverse)

1.1 批量导入.xlsx文件

# 替换为你的文件存储文件夹路径
file_dir <- "C:/your_file_path"

# 提取路径下所有.xlsx格式文件(忽略大小写,也可匹配.XLSX后缀)
xlsx_files <- list.files(
  path = file_dir,
  pattern = "\\.xlsx$",
  full.names = TRUE,
  ignore.case = TRUE
)

# 批量读取文件,同时新增列存储原始文件名用于后续匹配
xlsx_list <- lapply(xlsx_files, function(path) {
  df <- read_excel(path, sheet = 1) # 如需读取指定工作表可调整sheet参数
  df$raw_file_name <- basename(path)
  return(df)
})

# 可选操作:将所有文件合并为一个总数据框
all_xlsx <- bind_rows(xlsx_list)

1.2 批量导入.DAT文件

.DAT一般为文本格式的分隔符文件,请根据你的实际文件格式调整read.table的header、sep、encoding等参数:

# 提取路径下所有.DAT格式文件
dat_files <- list.files(
  path = file_dir,
  pattern = "\\.DAT$",
  full.names = TRUE,
  ignore.case = TRUE
)

# 批量读取文件
dat_list <- lapply(dat_files, function(path) {
  # sep = "" 代表匹配任意空白分隔符,逗号分隔可改为sep = ",", 制表符分隔改为sep = "\t"
  df <- read.table(path, header = TRUE, sep = "", fill = TRUE, encoding = "UTF-8")
  df$raw_file_name <- basename(path)
  return(df)
})

# 可选操作:合并为总数据框
all_dat <- bind_rows(dat_list)

2 依据文件名部分字段合并文件并计算指定变量均值

你给出的文件名规则为[受试者ID]_[随访周期]_[重复序号]_[其他后缀],可先从文件名中拆分出关键字段,再按字段分组合并计算均值,完整流程如下:

# 此处以导入的xlsx总数据为例,如使用DAT数据替换为all_dat即可
processed_df <- all_xlsx %>%
  # 去除文件名后缀
  mutate(file_name_no_suffix = str_remove(raw_file_name, "\\.(xlsx|XLSX|DAT|dat)$"),
         # 按下划线拆分,提取第1位为受试者ID,第2位为随访周期
         subject_id = str_split_i(file_name_no_suffix, "_", 1),
         follow_cycle = str_split_i(file_name_no_suffix, "_", 2))

# 按ID和随访周期分组,计算目标变量的均值
stat_result <- processed_df %>%
  group_by(subject_id, follow_cycle) %>%
  # 替换target_var为你需要计算均值的实际变量名,na.rm = TRUE代表忽略缺失值
  summarise(target_var_mean = mean(target_var, na.rm = TRUE),
            .groups = "drop")

# 输出计算结果
print(stat_result)

补充说明

  • 如需要保留合并后的所有原始观测,可将summarise替换为mutate,会在原数据基础上新增均值列,不会压缩行数
  • 如文件名分隔符不是下划线,调整str_split_i的第二个参数为对应的分隔符即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:48:03