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

如何在R中批量导入EPA网站CSV文件并自动命名DataFrame?

在R中批量导入EPA的CSV文件并自动命名数据框

首先需要处理文件名中月份格式不一致的问题(例如jun对应文件名里的june,sep对应sept),我们可以先建立月份缩写与文件名中对应字符串的映射表,再通过循环或purrr工具批量处理:

方法一:使用tidyverse的purrr工具(推荐)

library(tidyverse)

# 建立月份缩写与文件名中月份字符串的映射
month_mapping <- tibble(
  month_abbr = c("jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"),
  filename_month = c("jan", "feb", "mar", "apr", "may", "june", "july", "aug", "sept", "oct", "nov", "dec")
)
target_year <- 2013
base_url <- "https://www.epa.gov/sites/default/files/2017-10/rindata_%s%d.csv"

# 批量导入、处理并命名数据框
month_mapping %>%
  pwalk(function(month_abbr, filename_month) {
    # 构造目标文件URL
    file_url <- sprintf(base_url, filename_month, target_year)
    # 读取数据并添加month、year列
    df <- read.csv(file_url) %>%
      add_column(month = month_abbr, year = target_year)
    # 将数据框以指定名称存入全局环境(如jan_13)
    assign(paste0(month_abbr, "_", substr(target_year, 3, 4)), df, envir = .GlobalEnv)
  })

方法二:使用基础for循环

如果更习惯基础循环写法,也可以用以下代码:

library(tidyverse)

month_mapping <- tibble(
  month_abbr = c("jan", "feb", "mar", "apr", "may", "jun", "jul", "aug", "sep", "oct", "nov", "dec"),
  filename_month = c("jan", "feb", "mar", "apr", "may", "june", "july", "aug", "sept", "oct", "nov", "dec")
)
target_year <- 2013
base_url <- "https://www.epa.gov/sites/default/files/2017-10/rindata_%s%d.csv"

for (i in 1:nrow(month_mapping)) {
  month_abbr <- month_mapping$month_abbr[i]
  filename_month <- month_mapping$filename_month[i]
  # 构造URL
  file_url <- sprintf(base_url, filename_month, target_year)
  # 读取并处理数据
  df <- read.csv(file_url) %>%
    add_column(month = month_abbr, year = target_year)
  # 命名并存入全局环境
  assign(paste0(month_abbr, "_", substr(target_year, 3, 4)), df, envir = .GlobalEnv)
}

关键说明

  • month_mapping 解决了文件名中月份格式不统一的问题,确保每个月份的URL都能正确构造
  • sprintf 用于快速拼接URL,比paste更适合处理带格式的字符串组合
  • assign 函数将处理好的数据框按[月份缩写]_[年份后两位]的规则命名(如jan_13),存入全局环境,和手动导入的命名规则完全一致
  • 如果需要处理多个年份,只需将target_year改为年份向量(如2013:2015),再扩展映射表或嵌套循环即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 11:01:01