聚合来自多个具有相同结构的excel文件的数据

问题描述

我准备了一份调查问卷,收件人必须填写一个 excel 文件。我现在有一百个结构相同但条目不同的excel文件。例如,对于recipient_b,我们有:

enter image description here

每个 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
...

有什么奇特的方法吗?一种也适用于 excel 列表的方法

解决方法

您可以使用 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