如何用R循环处理27个国家CSV文件:读取、选列、筛选并导出
批量处理多国家CSV文件的R代码实现
完整可运行代码
# 1. 设置CSV文件所在的文件夹路径(替换成你的实际路径) data_folder <- "C:/Users/.../你的CSV文件所在文件夹/" # 2. 获取文件夹中所有CSV文件的完整路径 csv_files <- list.files(path = data_folder, pattern = "\\.csv$", full.names = TRUE) # 3. 定义需要保留的列(替换成你实际需要的列名) target_columns <- c("Colum1", "Colum2", "YEAR") # 必须包含YEAR列用于筛选 # 4. 循环处理每个CSV文件 for (file in csv_files) { # 读取文件 df <- read.csv(file, stringsAsFactors = FALSE) # 选择目标列(纠正你原代码里的变量名笔误) df_selected <- df[target_columns] # 筛选2023年的数据 df_filtered <- df_selected[df_selected$YEAR == "2023", ] # 生成唯一输出文件名:原文件名后追加"_2023",避免覆盖原文件 output_filename <- paste0(tools::file_path_sans_ext(basename(file)), "_2023.csv") output_path <- file.path(data_folder, output_filename) # 导出处理后的文件 write.csv(df_filtered, file = output_path, row.names = FALSE) # 可选:打印处理进度,方便跟踪 cat("已处理:", basename(file), "→ 输出为:", output_filename, "\n") }
关键细节说明
- 文件列表获取:
list.files的pattern = "\\.csv$"确保只抓取CSV格式文件,full.names = TRUE返回完整路径,避免因工作目录不一致导致的读取错误。 - 变量名修正:你原代码里的
dfColumFilter <- dfSemCol[...]存在笔误,dfSemCol应为dfColum(对应代码里的df_selected),已在代码中修正。 - 输出文件命名:用
tools::file_path_sans_ext去掉原文件后缀,再追加_2023.csv,保证每个输出文件唯一且直观对应原文件。 - 数据类型适配:如果你的
YEAR列是数值类型而非字符串,把代码里的"2023"改成2023即可。
内容的提问来源于stack exchange,提问作者Yuri Schäffer
相关产品推荐
相关产品推荐

