问题描述
我准备了一份调查问卷,收件人必须填写一个 excel 文件。我现在有一百个结构相同但条目不同的excel文件。例如,对于recipient_b,我们有:
每个 Excel 文件都以收件人命名。例如:recipient_a_survey.xlsx;收件人_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
...
解决方法
您可以使用 list.files
创建要读取的 excel 文件向量,将它们转置并将它们绑定到一个对象 (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