R如何一次性导入指定文件夹内结构相同的多个Excel文件并合并
R批量导入同结构Excel文件并合并的方法
核心思路是先批量获取目标文件夹下所有Excel文件的路径,再通过批量读取函数一次性加载所有文件并自动按行合并,无需逐个定义数据框变量。
前置依赖
需要先安装并加载三个工具包:
readxl:用于读取Excel格式文件purrr:用于实现批量循环操作dplyr:用于数据框合并操作
也可以直接加载完整的tidyverse包,上述三个包均包含在tidyverse生态中。
基础实现代码
# 加载所需包 library(readxl) library(purrr) library(dplyr) # 替换为你实际存放Excel文件的文件夹路径 folder_path <- "./target_excel_folder" # 获取文件夹下所有xlsx文件的完整路径 excel_file_paths <- list.files( path = folder_path, pattern = "\\.xlsx$", # 仅匹配xlsx后缀的文件,若为xls格式改为\\.xls$ full.names = TRUE, # 返回文件完整路径,避免读取失败 recursive = FALSE # 若需要读取子文件夹内的文件,改为TRUE即可 ) # 批量读取所有文件后自动按行合并为单个数据框 combined_data <- map_dfr(excel_file_paths, ~ read_excel(.x))
map_dfr函数会自动将批量读取返回的列表数据按行合并,无需额外调用bind_rows()。
进阶用法:保留数据来源文件名
如果需要标记每一行数据来源于哪个原始文件,可以调整代码新增来源列:
combined_data <- map_dfr(excel_file_paths, function(file_path) { read_excel(file_path) %>% mutate(source_file = basename(file_path)) # 新增列存储原始文件名称 })
注意事项
- 所有待合并的Excel文件需要保证列名、列顺序完全一致,列的存储类型尽量统一,否则合并时会触发类型不匹配报错。如果出现类型错误,可以在
read_excel()中添加col_types参数统一指定每一列的类型。 - 如果需要同时匹配xlsx和xls两种格式,将
pattern参数修改为\\.xlsx$|\\.xls$即可。 - 该方法支持批量处理几十甚至上百个同结构Excel文件,代码不需要随文件数量调整,仅需修改文件夹路径参数即可。
内容的提问来源于stack exchange,提问作者Jimmy Cloutier
相关产品推荐
相关产品推荐

