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

如何用R代码对文件夹内多份Excel文件批量清洗并输出新文件

问题描述

我有一段用于清洗单个Excel文件的R代码:

df <- read_excel("filepath", sheet="Master") 

df <- df[-c(1,2,3,4,5),] 

colnames(df) <- df[1, ]

df <- df[-1, ]

这段代码可以完成单文件的清洗工作,但我希望将其扩展为批量处理文件夹内的所有Excel文件,并将处理后的结果保存为新文件。目前我写了以下代码,但还需要完善:

files <- list.files(path = "folder path")

lst1 <- lapply(files, function(x)
{temp <- read_excel(x, sheet = "Master")[-c(1,2,3,4,5),]
names(temp) <- temp[1, ]
temp[-1, ]
 })
解决方案

你需要在现有代码基础上补充文件路径处理和结果保存的逻辑,以下是完整可运行的批量处理代码:

前置准备

确保安装并加载readxl(读取Excel)和writexl(写入Excel)包:

# 首次运行时安装包
install.packages(c("readxl", "writexl"))

# 加载包
library(readxl)
library(writexl)

完整批量处理代码

# 设置目标文件夹路径(替换为你的实际路径)
folder_path <- "your/actual/folder/path"

# 获取文件夹内所有Excel文件的完整路径(仅筛选.xlsx/.xls格式)
files <- list.files(
  path = folder_path,
  pattern = "\\.(xlsx|xls)$",
  full.names = TRUE
)

# 批量处理并保存清洗后的文件
lapply(files, function(file) {
  # 读取数据并执行清洗逻辑
  temp <- read_excel(file, sheet = "Master")
  temp <- temp[-c(1:5), ]  # 删除前5行冗余内容
  colnames(temp) <- as.character(temp[1, ])  # 将第1行设为列名
  temp <- temp[-1, ]  # 删除原列名所在行
  
  # 生成输出文件名(原文件名后添加"_cleaned"后缀)
  output_file <- gsub("\\.(xlsx|xls)$", "_cleaned.xlsx", file)
  
  # 保存清洗后的文件
  write_xlsx(temp, path = output_file)
})

关键优化说明

  • 使用full.names = TRUE获取文件完整路径,避免因工作目录不一致导致的文件读取失败
  • 通过pattern参数精准筛选Excel文件,防止处理无关格式的文件
  • 用as.character()转换列名,避免列名出现因子类型的异常问题
  • 自动生成带_cleaned后缀的输出文件名,清晰区分原文件与处理后的文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 06:20:50