Как я могу импортировать несколько файлов .xls (с несколькими листами каждый) в R версии 3.5.3?

#r #import #xls

#r #импорт #xls

Вопрос:

У меня есть 27 файлов xls для импорта в R, и у каждого есть несколько листов в рабочей книге. Я пытаюсь загрузить все файлы за один раз, при этом только первый лист в каждом файле импортируется в свой собственный фрейм данных (другие листы в данный момент импортировать не нужно).

Я видел, как некоторые создают список файлов, а затем используют пакет readxl, однако я использую новейшую версию R (3.5.3), и, насколько я могу судить, она несовместима.

Я надеюсь, что в итоге получится 27 отдельных фреймов данных, к которым я смогу затем добавить столбец, идентифицирующий конкретный фрейм данных, чтобы все они могли быть объединены в один фрейм данных для работы.

Ответ №1:

Список файлов и readxl работают нормально. Я создал 3 файла Excel с

Mappe1.xlsx — Таблица 1 — A1:A4 — 1, 2, 3, 4

Mappe2.xlsx — Таблица 1 — A1:A4 — 4, 2, 3, 4

Mappe3.xlsx — Таблица 1 — A1:A4 — 4, 2, 3, 4

Если вы используете код

 library(readxl)
library(tidyverse)

# define the names of the excel files 
excelNames <- paste0('Mappe', 1:3, '.xlsx')

lapply(1:length(excelNames), function(i) {

# get current ID and rid of the file extension   
currentID <- str_split(excelNames[i], '.xlsx', simplify = TRUE)[1]

# read excel file and add column with id
read_excel(
 excelNames[i],
 sheet = 'Tabelle1',
 col_names = FALSE,
 range = cell_limits(c(1, 1), c(4, 1))) %>%
 mutate(ID = currentID)
}) %>% 

# bind all results into one dataframe
bind_rows()
 

вы должны получить

 # A tibble: 12 x 2
    ...1 ID    
   <dbl> <chr> 
 1     1 Mappe1
 2     2 Mappe1
 3     3 Mappe1
 4     4 Mappe1
 5     4 Mappe2
 6     2 Mappe2
 7     3 Mappe2
 8     4 Mappe2
 9     4 Mappe3
10     2 Mappe3
11     3 Mappe3
12     4 Mappe3