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

R语言依据文件名日期规律批量筛选指定月份CSV文件的方法

R语言按月份批量筛选Mean_SST系列CSV文件实现方案

前置准备

  • 提前确认所有CSV的存储位置,如果是存在多级嵌套子目录下,后续调用文件扫描函数时需要开启递归扫描参数
  • 替换代码中的路径参数为本地实际存储CSV的文件夹绝对路径,降低路径识别报错概率

步骤1:初筛全量目标文件

通过固定文件名前缀做第一轮过滤,排除目录下和SST无关的其他文件,减少后续处理的计算量:

# 获取目录下所有以Mean_SST_为开头、以.csv为后缀的文件全路径
all_target_files <- list.files(
  path = "本地CSV存储文件夹路径",
  pattern = "^Mean_SST_.*\\.csv$",
  full.names = TRUE,
  recursive = FALSE # 如果有子目录存文件,把这个参数改成TRUE
)

步骤2:基于文件名提取日期做月份匹配

完全不需要读取任何CSV的内部内容,仅通过文件名里的结构化日期字段完成筛选,8031个文件的全量处理耗时仅为毫秒级,不会占用额外内存:

  • 配置需要筛选的目标月份,比如要筛选所有2月的文件,参数设为2,要筛选5月就设为5
  • 通过正则把文件名里夹在Mean_SST_和.csv之间的日期字符串提取出来
  • 把字符串转成标准日期格式后,提取每个文件对应的月份值,和目标值做匹配
    可直接运行的代码片段:
# 配置目标筛选月份
target_month <- 2

# 正则提取每个文件对应的日期字符串
file_date_text <- gsub(
  pattern = "^.*Mean_SST_(.*)\\.csv$",
  replacement = "\\1",
  x = all_target_files
)

# 提取每个文件对应的月份数值
file_month_value <- as.integer(format(as.Date(file_date_text), "%m"))

# 过滤得到最终匹配指定月份的文件列表
matched_month_files <- all_target_files[file_month_value == target_month]

常见踩坑提醒

  • 写正则匹配的时候一定要加首尾锚定(即pattern里开头的^和结尾的$),不然很容易把文件名里带Mean_SST关键词的其他临时文件、备份文件误算进来
  • 不要图省事用模糊的字符串包含判断(比如直接查文件名里有没有-02-片段),这种方式会误匹配其他月份的文件(比如10月、12月的日期结构中带02的片段,像Mean_SST_2001-10-02这类非2月文件也会被命中),转成标准日期再提取月份的方式是最严谨的

效果校验:拿到匹配结果后可以通过文件数快速核对是否正确,以筛选2月文件为例,1997-12-31到2019-12-31的时间区间内,一共覆盖23个自然年的2月,对应23个独立文件,如果结果数量和这个数值偏差较大,就需要检查正则提取的规则是否存在漏匹配、误匹配的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 12:45:06