Читать все файлы Excel в R на листе с именем файла в качестве столбца
У меня есть локальная папка с файлами Excel в том же формате. Каждый файл Excel имеет 10 листов.
Я хочу иметь возможность сделать следующее:
1) Прочитать все файлы Excel в R
2) Связать все результаты вместе, но по листу.
3) Результатом будет 10 новых фреймов данных со всеми файлами Excel, объединенными вместе.
4) Будет добавлен новый столбец с именем файла
Я посмотрел код, и лучшее, что я мог найти, это, но он не делает это по листам:
files = list.files()
library(plyr)
library(readr)
library(readxl)
data2=lapply(files, read_excel)
for (i in 1:length(data2)){data2[[i]]<-cbind(data2[[i]],files[i])}
all_data <- do.call("rbind.fill", data2)
Кто-нибудь имел успех с этим?
заранее спасибо
1 ответ
Решение
Если вы хотите, вы также можете векторизовать его, используя tidyverse
подход.
require(tidyverse)
df <- list.files(path = "your_path",
full.names = TRUE,
recursive = TRUE,
pattern = "*.xls") %>%
tbl_df() %>%
mutate(sheetName = map(value, readxl::excel_sheets)) %>%
unnest(sheetName) %>%
mutate(myFiles = purrr::map2(value, sheetName, function(x,y) {
readxl::read_excel(x, sheet = paste(y))})) %>%
unnest(myFiles)
* Почему-то я не смог пометить его, поэтому я копирую свой ответ отсюда