R语言批量处理多工作表Excel文件的高效实现方法咨询
批量处理多工作表Excel文件的高效方案
针对你有131个格式一致工作表的Excel文件,完全可以通过自动化批量处理替代手动操作,步骤如下:
核心思路
通过获取所有工作表名称,封装单表读取逻辑,再批量遍历合并,全程无需手动指定工作表序号或修改站点ID。
具体代码实现
首先加载所需工具包:
library(readxl) library(purrr) library(dplyr) library(stringr) # 用于提取站点信息
- 获取所有工作表名称
sheet_names <- excel_sheets("mydata.xlsx")
- 封装单表读取函数
把读取、列筛选、站点信息提取的逻辑打包成函数:
read_single_sheet <- function(sheet_name) { # 从工作表名提取站点ID(比如从"(13) stationName"中取出13) station_id <- str_extract(sheet_name, "\\d+") # 提取站点名称 station_name <- str_remove(sheet_name, "^\\(\\d+\\) ") # 读取工作表,按你的需求设置skip和n_max raw_df <- read_excel("mydata.xlsx", skip = 1, n_max = 65, sheet = sheet_name) # 提取指定列(替换为你实际需要的列名,比如c("日期", "温度", "湿度")) filtered_df <- raw_df %>% select(目标列1, 目标列2, 目标列3) # 新增站点标识列,方便后续区分数据来源 filtered_df %>% mutate( station_id = station_id, station_name = station_name, .before = 1 # 可选:把站点信息放在数据最前列 ) }
- 批量读取并合并所有数据
用map_dfr直接遍历所有工作表,自动合并成一个完整数据框:
combined_data <- map_dfr(sheet_names, read_single_sheet)
方案优势
- 全程自动化:无需手动逐个读取工作表,131个表一键处理
- 自动提取站点信息:从工作表名中解析ID和名称,避免手动修改出错
- 一步合并:
map_dfr直接生成合并后的最终数据框,省去手动rbind的繁琐 - 可维护性强:后续调整读取参数(如skip、n_max)或筛选列,只需修改函数内的对应部分
内容的提问来源于stack exchange,提问作者Johanna
相关产品推荐
相关产品推荐

