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

如何在R中迭代读取文件并按站点生成分离式CSV输出?

按站点(州)生成独立的15分钟均值CSV文件(R实现)

核心处理逻辑

  • 遍历所有按州划分的顶层文件夹
  • 对每个州文件夹下的分钟级txt文件,保留原有注释行跳过、列名调整逻辑
  • 计算每15行(对应15分钟)的均值
  • 将单个州的所有处理结果合并,输出为以州名命名的独立CSV

完整实现代码

# 设置根目录:所有州文件夹的上级目录,请替换为你的实际路径
root_dir <- "/your/root/folder/path"

# 获取所有州(站点)文件夹的路径
state_folders <- list.dirs(root_dir, recursive = FALSE)

# 遍历每个州文件夹
for (state_folder in state_folders) {
  # 提取州名(从文件夹路径中截取最后一段)
  state_name <- basename(state_folder)
  
  # 获取当前州下所有的txt数据文件
  txt_files <- list.files(state_folder, pattern = "\\.txt$", full.names = TRUE)
  
  # 初始化空数据框,存储当前州的所有处理结果
  state_results <- data.frame()
  
  # 遍历当前州下的每个txt文件
  for (file in txt_files) {
    # 跳过注释行:假设注释行以#开头,可根据实际格式修改匹配规则
    raw_lines <- readLines(file)
    valid_lines <- raw_lines[!grepl("^#", raw_lines)]
    df <- read.table(text = valid_lines, header = FALSE, sep = "\t") # 分隔符根据你的文件实际情况调整
    
    # 调整列名:替换为你原有代码中的列名定义
    colnames(df) <- c("record_time", "temp", "humidity", "pressure")
    
    # 生成15行分组标识,处理行数不是15倍数的情况(最后一组不足15行也保留)
    df$group_id <- gl(nrow(df) %/% 15 + 1, 15, nrow(df))
    
    # 计算每组(15分钟)的均值,排除分组列
    avg_df <- aggregate(. ~ group_id, data = df[, !colnames(df) %in% "group_id"], mean)
    
    # 可选:用每组的第一个时间戳作为该15分钟区间的标记
    avg_df$interval_start <- df$record_time[seq(1, nrow(df), 15)]
    
    # 将当前文件的结果合并到州总结果中
    state_results <- rbind(state_results, avg_df)
  }
  
  # 输出当前州的CSV文件,文件名以州名命名
  output_path <- file.path(root_dir, paste0(state_name, "_15min_avg.csv"))
  write.csv(state_results, output_path, row.names = FALSE)
  
  # 打印进度提示
  cat(sprintf("站点 %s 数据处理完成,文件已保存至:%s\n", state_name, output_path))
}

关键细节说明

  1. 注释行处理:代码默认过滤以#开头的行,若你的注释行格式不同(比如以//开头),修改grepl("^#", raw_lines)中的匹配正则即可。
  2. 15行分组过滤:如果需要丢弃末尾不足15行的分组,可在聚合后添加:
    # 只保留行数为15的分组
    group_counts <- table(df$group_id)
    avg_df <- avg_df[group_counts[avg_df$group_id] == 15, ]
    
  3. 输出路径调整:若想把CSV输出到对应州的文件夹内,修改output_path为file.path(state_folder, paste0(state_name, "_15min_avg.csv"))即可。

内容的提问来源于stack exchange,提问作者Alexia k Boston

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 05:32:16