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

如何提取文件名片段添加至多个TXT后合并并保存为CSV?

批量处理TXT并合并为CSV的实现方案

需求说明

  • 处理一批变量数量、名称完全一致的TXT文件
  • 为每个文件新增3列数据,提取自文件名的特定片段:
    • Month:文件名中2022后的前两位(如示例里的05)
    • Day:日期部分的日(如示例里的05)
    • Hour:起始时间的小时(如示例里的14)
  • 最终将所有处理后的文件合并成一个CSV,新增列需对应每个源TXT的唯一文件名

文件名格式示例:

NVR_ch2_main_20220505140000_20220505150000

你已实现的单文件处理代码:

read_tsv('NVR_ch2_main_20220505132105_20220505140000.txt') %>%
  mutate(filename = 'NVR_ch2_main_20220505132105_20220505140000.txt') %>% 
  select(filename, everything()) %>% 
  write_csv('C:/Users/marta/Documents/R/Crete/NVR_ch2_main_20220505132105_20220505140000.csv')

批量处理步骤

1. 加载依赖包

需要用到tidyverse(包含readr和dplyr)和fs包来批量操作文件:

library(tidyverse)
library(fs)

2. 获取所有目标TXT文件路径

把下面的路径替换成你的文件实际存放路径:

txt_files <- dir_ls("你的TXT文件所在文件夹路径", regexp = "\\.txt$")

3. 编写批量处理函数

这个函数会自动读取文件、从文件名提取所需字段并新增列:

process_file <- function(file_path) {
  # 读取单个TXT文件
  df <- read_tsv(file_path)
  
  # 获取纯文件名(去掉路径)
  file_name <- path_file(file_path)
  
  # 提取文件名里的起始时间片段(2022开头的10位字符:2022MMDDHH)
  time_part <- str_extract(file_name, "2022\\d{6}")
  
  # 拆分出Month、Day、Hour
  month_val <- str_sub(time_part, 5, 6) # 第5-6位是月份
  day_val <- str_sub(time_part, 7, 8)   # 第7-8位是日期
  hour_val <- str_sub(time_part, 9, 10) # 第9-10位是小时
  
  # 新增列并调整列顺序
  df %>%
    mutate(
      filename = file_name,
      Month = month_val,
      Day = day_val,
      Hour = hour_val
    ) %>%
    select(filename, Month, Day, Hour, everything())
}

4. 批量处理并合并所有文件

用map_dfr自动遍历所有文件,处理后合并成一个数据框:

combined_data <- map_dfr(txt_files, process_file)

5. 保存合并后的CSV

替换成你想要保存的路径:

write_csv(combined_data, "C:/Users/marta/Documents/R/Crete/combined_all_data.csv")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 16:56:02