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

批量过滤CSV文件后如何合并结果并汇总过滤计数?

批量处理CSV并汇总过滤统计数据

核心思路

在处理每个CSV文件时,同时计算初始行数、过滤后行数及删除行数,将这些统计信息与过滤后的数据分开存储,最后分别合并统计信息为表格、合并数据为单个data.frame。

修改后的完整代码

library(tidyverse)

# 定义单个CSV文件的处理函数,返回统计信息和过滤后数据的列表
process_csv <- function(file_path) {
  # 读取文件(show_col_types=FALSE关闭列类型提示,可选)
  raw_df <- read_csv(file_path, show_col_types = FALSE)
  
  # 计算初始行数
  initial_rows <- nrow(raw_df)
  
  # 执行过滤操作——替换为你的实际过滤条件
  filtered_df <- raw_df %>% 
    filter(your_condition_here)
  
  # 计算过滤后行数
  filtered_rows <- nrow(filtered_df)
  
  # 返回包含统计和数据的列表
  list(
    stats = tibble(
      filename = basename(file_path),
      initial_rows = initial_rows,
      filtered_rows = filtered_rows,
      rows_removed = initial_rows - filtered_rows
    ),
    data = filtered_df
  )
}

# 获取目标目录下所有CSV文件的完整路径
csv_files <- list.files(
  path = "your_csv_folder_path", # 替换为你的CSV文件所在目录
  pattern = "\\.csv$",
  full.names = TRUE
)

# 批量处理所有CSV文件
all_results <- map(csv_files, process_csv)

# 提取并合并所有统计信息为一个表格
filter_summary <- map_dfr(all_results, ~ .x$stats)

# 提取并合并所有过滤后的数据为单个data.frame
combined_filtered_data <- map_dfr(all_results, ~ .x$data)

# 查看统计结果
print(filter_summary)

# 查看合并后的数据(可选)
# print(combined_filtered_data)

# 可选:保存统计表格和合并数据到文件
# write_csv(filter_summary, "filter_stats_summary.csv")
# write_csv(combined_filtered_data, "combined_filtered_data.csv")

代码说明

  • process_csv函数:负责单个文件的读取、过滤和统计,返回的列表中stats是该文件的统计行(包含文件名、初始行数、过滤后行数、删除行数),data是过滤后的数据集。
  • map函数:遍历所有CSV文件,调用process_csv处理每个文件,返回包含所有文件结果的列表。
  • map_dfr函数:分别提取列表中的统计信息和过滤后数据,按行合并成最终的统计表格和合并数据集。

扩展提示

  • 若处理超大CSV文件,推荐用vroom包替代read_csv,读取速度更快且内存占用更低,只需将read_csv替换为vroom::vroom即可。
  • 过滤条件可根据实际需求灵活调整,例如filter(age >= 18, status == "active")。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 17:39:24