r - 导入和转换许多 csv 文件

标签 r tidyverse purrr readr

我正在以低效的方式导入和转换许多文件。我想知道是否有人可以向我展示使用 purr 的更快方法。以下代码是我尝试过的,它应该为您提供一般模式:

data_2013 <- read_csv("data_2013") %>%
clean_names() %>% # using the janitor package
mutate(year = "2013")

data_2014 <- read_csv("data_2014") %>%
clean_names() %>%
mutate(year = "2014")

年份增加 1(一直到 2019 年)。我最终加入了所有这些文件,因为关键变量是相同的。但显然文件的导入效率很低。

任何帮助将不胜感激

最佳答案

我们可以使用 map 循环执行此操作。循环文件名,使用 read_csv 读取,清理名称,然后创建“年份”列

library(dplyr)
library(stringr)
library(purrr)
library(readr)
library(janitor)

files <- paste0("data_", 2013:2019, ".csv")
lst1 <-  files %>%
           map(~ read_csv(.x)) %>%
             clean_names() %>%
             mutate(year = str_extract(., "\\d{4}"))

如果list输出需要合并到单个数据帧

dat1 <- bind_rows(lst1, .id = 'grp')

base R中,这可以通过lapply来完成

lst1 <- lapply(files, function(x) transform(read.csv(x), 
                year = sub("data_(\\d+)\\..*", "\\1", x)))
dat1 <- do.call(rbind, Map(cbind, lst, grp = seq_along(lst1)))

关于r - 导入和转换许多 csv 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59815020/

相关文章:

r - 如何用两种颜色填充图上的单个 'pch' 点?

r - 具有不同颜色负值的条形图

R:使用 data.table 进行制表和插入

r - 将自定义函数应用于数据框中的列对

r - group_by 和过滤器删除了太多行

r - 如何在整个 data.frame 中搜索字符串

r - 防止部分参数匹配

R:将嵌套的for循环转换为应用函数

r - 使用函数通过查找列表完成不完全链接的文档(文档树)

r - 在 map 函数中迭代应用 ggplot 函数