如何根据 R 中的某些模式导入大量数据集
How to import a lot of datasets based on some patterns in R
我有很多数据集(超过 20 个)要导入,我想同时导入它们
所有数据集的名称开头为:SearchResults
,如:
SearchResults_2014_S1_2.csv
SearchResults_2014_S1.csv
SearchResults_2015_S1.csv
SearchResults_2015_S2.csv
所有数据集都具有相同顺序的相同列名。
我想在一行代码中全部导入它们然后绑定它们。
我试图将整个示例放在一起,因为这里的信息非常稀缺。
第一步,加载一些数据:
library(tidyverse)
c("SearchResults_2014_S1_2.csv",
"SearchResults_2014_S1.csv",
"SearchResults_2015_S1.csv",
"SearchResults_2015_S2.csv") %>%
walk(~
iris %>%
sample_n(replace = TRUE,
size = nrow(iris) *
# sample(c(2,3,4), size = 1)) %>%
runif(1, 1, 4)) %>%
readr::write_excel_csv2(., file = fs::path(fs::path_temp(), .x)) %>%
print())
#'
fs::dir_ls(fs::path_temp())
现在临时目录有一些有效的数据文件,但是
我们想让它有点挑战性,所以让我们保存一些其他文件
在同一目录中:
replicate(25, fs::file_temp() %>%
write.csv(x = list()))
再看一遍临时目录下的文件:
fs::dir_ls(fs::path_temp())
最后,让我们阅读名称中包含SearchResults
的文件:
fs::dir_ls(
path = tempdir(),
glob = "*SearchResults_*.csv",
type = "file"
) %>% {
tibble(path = .,
data = map(., . %>%
read_csv2(show_col_types = FALSE)))
} -> all_files
此时,您已将文件放在 data
变量中。 运行
spec()
看它们的解析是否都顺利。
最好在上面的阅读代码中设置col_types
,这样
您确定读入正确。
最后,unnest
整理所有加载的数据集。
加上一个名为 path
的字段,它只是文件名,以找出
这些行来自哪里(如果那里有另一条信息)。
all_files %>%
mutate(path = fs::path_file(path)) %>%
unnest(data)
我有很多数据集(超过 20 个)要导入,我想同时导入它们
所有数据集的名称开头为:SearchResults
,如:
SearchResults_2014_S1_2.csv
SearchResults_2014_S1.csv
SearchResults_2015_S1.csv
SearchResults_2015_S2.csv
所有数据集都具有相同顺序的相同列名。
我想在一行代码中全部导入它们然后绑定它们。
我试图将整个示例放在一起,因为这里的信息非常稀缺。
第一步,加载一些数据:
library(tidyverse)
c("SearchResults_2014_S1_2.csv",
"SearchResults_2014_S1.csv",
"SearchResults_2015_S1.csv",
"SearchResults_2015_S2.csv") %>%
walk(~
iris %>%
sample_n(replace = TRUE,
size = nrow(iris) *
# sample(c(2,3,4), size = 1)) %>%
runif(1, 1, 4)) %>%
readr::write_excel_csv2(., file = fs::path(fs::path_temp(), .x)) %>%
print())
#'
fs::dir_ls(fs::path_temp())
现在临时目录有一些有效的数据文件,但是 我们想让它有点挑战性,所以让我们保存一些其他文件 在同一目录中:
replicate(25, fs::file_temp() %>%
write.csv(x = list()))
再看一遍临时目录下的文件:
fs::dir_ls(fs::path_temp())
最后,让我们阅读名称中包含SearchResults
的文件:
fs::dir_ls(
path = tempdir(),
glob = "*SearchResults_*.csv",
type = "file"
) %>% {
tibble(path = .,
data = map(., . %>%
read_csv2(show_col_types = FALSE)))
} -> all_files
此时,您已将文件放在 data
变量中。 运行
spec()
看它们的解析是否都顺利。
最好在上面的阅读代码中设置col_types
,这样
您确定读入正确。
最后,unnest
整理所有加载的数据集。
加上一个名为 path
的字段,它只是文件名,以找出
这些行来自哪里(如果那里有另一条信息)。
all_files %>%
mutate(path = fs::path_file(path)) %>%
unnest(data)