我正在做一个项目,我必须将大量的.csv文件导入Rstudio。这些文件对应于日期。每个日期都有一个目录,其中包含当天的文件。为了获得我用过的一天的所有数据:
im = list.files(pattern = "*.csv")
my-data = lapply(im, read_csv)
问题是我有数百天的文件,所以要经过数百个目录。有没有办法将所有目录中的所有文件一次性提取到同一个数据表中?奖金,如果它可以包括数据表中的日期(它所在的目录的标题)。如果这有所不同,我们也会使用tidyverse和tibbles。
答案 0 :(得分:1)
如果所有目录都在一个根目录中,请尝试list.files(recursive = TRUE)
,这也会搜索子目录。另外,查看purrr
和set_names()
的{{1}}技巧,它会迭代对象的内容和名称,让您将文件名作为列引入。像下面这样的东西。请注意,您必须使用一些字符串工具才能获得imap
末尾的日期。
filepaths
答案 1 :(得分:1)
我遇到了同样的问题 - 以下解决方案对我有用: - )
require(tidyverse)
path <- "/my/root/"
read_plus <- function(flnm) {
read_csv(flnm) %>%
mutate(filename = flnm)
}
my_data <-
list.files(path, pattern = "*.csv",
recursive = T,
full.names = T) %>%
map_df(~read_plus(.))