如何解决如何在R中的文件夹中的每个文件上执行相同的功能?
所以我有一个格式相同的csv的文件夹。我们将文件夹称为“文件夹”,然后将其命名为csv:
- test1.csv
- test2.csv
- test3.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个文件中,则我希望该日期每次出现的小时数总计为1 df。
解决方法
如果您愿意使用整个tidyverse
套软件包,purrr
会给您map_dfr
,该软件包通过绑定您读入的每个数据集来返回单个数据帧。有关此信息的更多信息here。
代码看起来像这样:
library(tidyverse)
list.files(path = "path_to_data",full.names = TRUE) %>%
map_dfr(read.csv) %>%
group_by(date) %>%
summarize(hour_sum = sum(hours))
,
也许您可以尝试下面的代码
aggregate(
hours ~ date,do.call(rbind,c(lapply(list.files(pattern = "test\\d+\\.csv"),read.csv),make.row.names = FALSE)),sum
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。