R脚本开发:读取符合命名规则的最新Excel并合并数据集导出
R脚本实现指定规则Excel文件匹配合并功能
前置依赖
运行前需先安装依赖包,执行如下命令:
install.packages(c("readxl", "writexl", "dplyr"))
可自定义配置项
以下参数可根据实际使用需求调整:
- 工作目录路径:存储目标Excel文件的本地文件夹路径
- 周期编号筛选范围:默认2015-2025,可修改起止数值
- 输出文件后缀
y:可选值a/b/c/d/e,按需指定 - 第二个自定义数据集路径:替换为你本地第二个数据集的实际存储路径
完整实现代码
# 加载依赖 library(readxl) library(writexl) library(dplyr) # -------------------------- 配置区 start -------------------------- # 工作目录 setwd("替换为你的本地文件夹路径") # 周期筛选范围 period_min <- 2015 period_max <- 2025 # 输出文件后缀y output_suffix <- "a" # 第二个自定义数据集路径 second_file_path <- "替换为第二个数据集的实际路径,例如./custom_data.xlsx" # -------------------------- 配置区 end -------------------------- # 1. 识别符合命名规则的最新文件 all_files <- list.files(pattern = "^abcd_all_(TET|KEK|KTET)_\\d{4}\\.xlsx$") if (length(all_files) == 0) { stop("未匹配到符合命名规则的文件,请检查工作目录和命名规则") } # 提取周期编号筛选符合范围的文件 valid_files <- sapply(all_files, function(x) { period <- as.integer(sub("^abcd_all_(TET|KEK|KTET)_(\\d{4})\\.xlsx$", "\\2", x)) return(period >= period_min & period <= period_max) }) valid_files <- names(valid_files[valid_files]) if (length(valid_files) == 0) { stop("指定周期范围内无符合规则的文件") } # 按修改时间降序取最新文件 file_info <- file.info(valid_files) latest_file <- rownames(file_info)[order(file_info$mtime, decreasing = TRUE)][1] # 提取对应周期编号 target_period <- sub("^abcd_all_(TET|KEK|KTET)_(\\d{4})\\.xlsx$", "\\2", latest_file) # 2. 读取两个数据集 df1 <- read_excel(latest_file) df2 <- read_excel(second_file_path) # 3. 按ID字段一对一merge,保存结果 merged_df <- merge(df1, df2, by = "ID", all = FALSE) # 如需左/右连接可调整all.x/all.y参数 output_filename <- paste0("CCC1_", target_period, "_", output_suffix, ".xlsx") write_xlsx(merged_df, output_filename) message("合并完成,结果已保存为:", output_filename)
注意事项
- 若匹配到多个符合规则的文件,脚本默认取修改时间最新的文件
- 两个数据集需均包含名为
ID的字段,合并时会按该字段做一对一匹配 - 若需调整合并逻辑(如保留全部左表数据、保留全部右表数据),可修改
merge函数的all.x/all.y参数
内容的提问来源于stack exchange,提问作者Elina Z
相关产品推荐
相关产品推荐

