如何用R批量处理文件夹CSV文件并将单文件转为合并文件的一行
批量处理CSV并合并结果实现方案
首先加载依赖包,你原有逻辑用了dplyr的函数,所以直接用tidyverse生态的工具实现批量处理最方便:
# 加载所需包 library(tidyverse) # 1. 获取目标文件夹下所有csv文件的路径,替换为你实际的文件夹路径 csv_paths <- list.files(path = "./你的csv存放文件夹", pattern = "\\.csv$", full.names = TRUE) # 2. 封装单文件处理逻辑,和你原有逻辑完全对齐 process_single_csv <- function(file_path) { # 读取单个csv文件 data <- read_csv(file_path, show_col_types = FALSE) # 你原有的数据处理步骤 data2 <- select(data, time_elapsed, button_pressed, responses, accuracy) data3 <- mutate(data2, time = tail(time_elapsed, 1)) transformed_data <- select(data3, -time_elapsed) new_data <- c( transformed_data$button_pressed[2], transformed_data$responses[3:6], transformed_data$button_pressed[7], transformed_data$time[1] ) # 转成单行数据框返回,同时新增列记录原始文件名方便核对,不需要可以删掉 res <- t(new_data) |> as.data.frame() res$source_file <- basename(file_path) return(res) } # 3. 批量处理所有文件,自动按行合并为一个数据框 all_result <- map_dfr(csv_paths, process_single_csv) # 4. 输出合并后的最终文件 write.csv(all_result, "merged_result.csv", row.names = FALSE)
注意事项
- 请将代码中的
./你的csv存放文件夹替换为你电脑上实际存储csv文件的文件夹路径 - 你原有代码中取
transformed_data$button_pressed[7]的逻辑,在你提供的6行示例数据中会返回空值(NA),请自行核对索引是否符合你的实际数据规则,如果是笔误调整对应索引即可 - 如果你不需要保留原始文件名对应的列,删掉
res$source_file <- basename(file_path)这一行即可
内容的提问来源于stack exchange,提问作者gokgok
相关产品推荐
相关产品推荐

