聚合来自多个 excel 个具有相同结构的文件的数据
Aggregate data from multiple excel files with the same structure
我准备了一份调查,收件人必须填写一份 excel 文件。我现在有一百个 excel 个结构完全相同但条目不同的文件。例如,对于 recipient_b 我们有:
每个 excel 文件都以收件人的名字命名。例如:recipient_a_survey.xlsx; recipient_b_survey.xlsx,等等
我想获得这样的数据框:
Name birth_place birth_date domicile
recipient_a London 21/04/1965 London
recipient_b Manchester 19/02/1985 London
recipient_c Glasgow 14/08/1991 Edinburgh
...
有什么好的方法吗?一种也适用于 excel.
列表的方法
您可以创建一个包含 excel 个文件的向量以使用 list.files
读取,转置它们并将它们绑定到一个对象中 (result
)。
library(tidyverse)
file_list <- list.files('folder/of/excelfiles', pattern = '\.xlsx$', full.names = TRUE)
map_df(file_list, ~{
df <- readxl::read_excel(.x)
df %>%
mutate(col = c('domicile', 'birth_date', 'birth_place')) %>%
select(-a) %>%
pivot_wider(names_from = col, values_from = b) %>%
mutate(Name = tools::file_path_sans_ext(basename(.x)), .before = 1)
}) -> result
result
我准备了一份调查,收件人必须填写一份 excel 文件。我现在有一百个 excel 个结构完全相同但条目不同的文件。例如,对于 recipient_b 我们有:
每个 excel 文件都以收件人的名字命名。例如:recipient_a_survey.xlsx; recipient_b_survey.xlsx,等等
我想获得这样的数据框:
Name birth_place birth_date domicile
recipient_a London 21/04/1965 London
recipient_b Manchester 19/02/1985 London
recipient_c Glasgow 14/08/1991 Edinburgh
...
有什么好的方法吗?一种也适用于 excel.
列表的方法您可以创建一个包含 excel 个文件的向量以使用 list.files
读取,转置它们并将它们绑定到一个对象中 (result
)。
library(tidyverse)
file_list <- list.files('folder/of/excelfiles', pattern = '\.xlsx$', full.names = TRUE)
map_df(file_list, ~{
df <- readxl::read_excel(.x)
df %>%
mutate(col = c('domicile', 'birth_date', 'birth_place')) %>%
select(-a) %>%
pivot_wider(names_from = col, values_from = b) %>%
mutate(Name = tools::file_path_sans_ext(basename(.x)), .before = 1)
}) -> result
result