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

基于参考表批量重命名Excel文件并在R中重构数据列

批量处理Excel文件:重命名或合并时替换Location列(R实现)

针对192个设备SN命名的xlsx文件,结合原文件名-新文件名参考表,提供两种高效解决方案:

方案一:批量重命名文件

直接修改原文件名称,适合需要保留重命名后文件的场景:

  1. 读入参考表(假设参考表保存为ref_table.xlsx)
  2. 构建原文件名(带.xlsx后缀)与新文件名的对应关系
  3. 循环执行重命名操作
library(readxl)

# 读取参考表
ref_table <- read_xlsx("ref_table.xlsx")

# 补充文件后缀,生成完整文件名
ref_table$old_full <- paste0(ref_table$`SN Number`, ".xlsx")
ref_table$new_full <- paste0(ref_table$new, ".xlsx")

# 批量重命名,不存在的文件会给出警告
for(i in 1:nrow(ref_table)) {
  if(file.exists(ref_table$old_full[i])) {
    file.rename(ref_table$old_full[i], ref_table$new_full[i])
  } else {
    warning(paste("跳过不存在的文件:", ref_table$old_full[i]))
  }
}

方案二:合并数据时直接替换Location列

无需修改原文件,在数据合并阶段直接将原文件名替换为新名称,更适合仅需处理数据的场景:

library(readxl)

# 读取参考表
ref_table <- read_xlsx("ref_table.xlsx")

# 获取当前目录下所有xlsx文件(含完整路径)
files <- list.files(path = ".", pattern = "\\.xlsx$", full.names = TRUE)

# 定义读取单个文件并添加location列的函数
read_with_location <- function(file_path) {
  # 读取文件内容
  df <- read_xlsx(file_path)
  # 提取不带后缀的原文件名
  old_name <- tools::file_path_sans_ext(basename(file_path))
  # 匹配对应的新名称,匹配不到则保留原名称
  new_name <- ref_table$new[ref_table$`SN Number` == old_name]
  df$location <- if(length(new_name) > 0) new_name else old_name
  return(df)
}

# 批量读取并合并所有文件
BF_soil_temp_21 <- do.call(rbind, lapply(files, read_with_location))

# 调整列顺序至期望结构
BF_soil_temp_21 <- BF_soil_temp_21[, c("Date/Time", "Unit", "Value", "location")]

说明

  • 方案一修改原文件,后续合并时直接用新文件名作为location即可
  • 方案二不改动原文件,直接在数据层面完成替换,避免误操作原文件的风险

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 05:53:25