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

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

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

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

1 Ответ

0 голосов
/ 19 апреля 2019

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

Mappe1.xlsx - Tabelle1 - A1: A4 - 1, 2, 3, 4

Mappe2.xlsx - Tabelle1 - A1: A4 - 4, 2, 3, 4

Mappe3.xlsx - Tabelle1 - 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
...