R导入Excel工作表提取A1单元格值作为新列行值的代码问询
R批量处理Excel工作表实现代码
首先安装并加载所需依赖包:
# 安装依赖(首次使用执行) install.packages(c("readxl", "dplyr", "purrr")) # 加载包 library(readxl) library(dplyr) library(purrr)
1. 封装单工作表处理函数
process_single_sheet <- function(file_path, sheet_name) { # 提取A1单元格的表标题作为id值 sheet_id <- read_excel( path = file_path, sheet = sheet_name, n_max = 1, col_names = FALSE ) |> pull(1) # 读取正式数据,跳过第一行,将第二行设为列名 df <- read_excel( path = file_path, sheet = sheet_name, skip = 1, col_names = TRUE ) # 新增id列,所有行取值为提取到的表标题 df <- df |> mutate(id = sheet_id) return(df) }
2. 批量处理所有工作表并合并结果
# 替换为你的Excel文件路径 excel_path <- "你的文件路径.xlsx" # 获取文件内所有工作表名称 all_sheets <- excel_sheets(excel_path) # 批量处理所有工作表,结果合并为单个数据框 final_data <- map_dfr(all_sheets, ~process_single_sheet(file_path = excel_path, sheet_name = .x))
功能说明
处理后的final_data会包含所有工作表的数据,每条数据都带有对应工作表A1单元格取值的id列,完全符合table a转table b的需求。如果A1为合并单元格也可正常识别,因为readxl读取合并单元格时仅首个位置会保留值,刚好匹配该类数据结构。
内容的提问来源于stack exchange,提问作者adame
相关产品推荐
相关产品推荐

