首页 > 解决方案 > 如何对R中文件夹中的每个文件执行相同的功能?

问题描述

所以我有一个格式相同的 csv 文件夹。让我们称文件夹“文件夹”和 csv 为:

每个csv的格式如下

ID   date        hours  info
001  01/01/2019  8      xxxx
002  01/01/2019  22     xxxx
003  01/02/2019  4      xxxx
004  01/02/2019  5      xxxx

因此,如果我想要一个工作,那么以下工作但我如何在文件夹中的所有文件中运行和组合?

totals <- df %>%
            group_by(date) %>%
            summarize(hour_sum = sum(hours)

所以基本上我想要一个数据框,它包含所有文件中的每个日期以及所有文件的小时总和。

因此,如果01/02/2019出现在 3 个文件中,我想要一个 df 中每次出现该日期的小时总和。

标签: rloopsdplyr

解决方案


如果你愿意使用整套tidyverse包,purrr给你map_dfr,它通过 rbinding 你读入的每个数据集返回一个数据帧。关于它的更多信息在这里

代码看起来像这样:

library(tidyverse)

list.files(path = "path_to_data", full.names = TRUE) %>%
  map_dfr(read.csv) %>%
  group_by(date) %>%
  summarize(hour_sum = sum(hours)) 


推荐阅读