首页 > 解决方案 > 导入多个 csv 文件并为每个文件添加年份

问题描述

我正在使用以下函数将来自不同年份的大约 10 个文件(全部来自同一个文件夹)导入 r。

ed.attain.places_0_10_18 <-
    list.files(path = "./ed_attainment/",
               pattern = "*.csv", 
               full.names = T) %>% 
    map_df(~read_csv(., col_types = cols(.default = "c"))) 

此文件夹 (ed_attainment/) 包含以下 csv 文件,一直到 '17。

ACS_09_5YR_B19301_with_ann.csv
ACS_10_5YR_B19301_with_ann.csv

我想将年份添加到上述函数中的每个文件中。只需导入一个 csv 文件,代码将是

read_csv("ACS_09_5YR_B19301_with_ann.csv")%>%mutate(year = 09)

这样文件名中的年份对应于新的“年份”变量中的值。

非常感谢!

标签: rcsvdplyr

解决方案


我建议:

myReadCsv <- function(fullPath){
   # Pull the Year out of the fullPath
  year <- paste0("20", str_match(fullPath, 
                         "ACS_(\\d{2})")[,2])
    # Read csv as you did before
  read_csv(fullPath, col_types = cols(.default = "c")) %>% 
     # Add YEAR in as a column
    mutate(YEAR = year)
}

进而

ed.attain.places_0_10_18 <-
  list.files(path = "./ed_attainment/",
             pattern = "*.csv", 
             full.names = T) %>% 
  map_df(myReadCsv) 

不跑

## 因为我手边没有 CSV 文件的目录。##


推荐阅读