将来自多个 Excel 工作簿的数据与多个 Excel 工作表合并到一个 R 数据框中

Merging data from multiple Excel workbooks with multiple Excel worksheets into an R dataframe

我正在尝试将多个 Excel 工作簿(每个工作簿都有多个 sheet)中的特定单元格范围合并到一个 R 数据框中。每个 Excel 工作簿都有一个我想忽略的 'Instructions' sheet,然后所有后续 sheet 都采用相同的布局(我想 select 个细胞 H4:R17 个)。到目前为止,我已经设法将所有工作簿中所有工作 sheet 的所有单元格合并到一个非常混乱的数据框中。但是,我正在努力确定正确的代码以在读取此代码时忽略 'Instructions' sheet 并按所需的单元格范围 (H4:R17) 进行子集化。我在下面包含了我的代码:

有什么想法吗?

#how to join multiple files based on multiple sheets
read_multiple_excel <- function(path) {
  path %>%
    excel_sheets() %>% 
    set_names() %>% 
    map_df(read_excel,path = path)
}
  
#joining all data.frames
data_df <- dir_ls(regexp = "xlsx") %>% 
  map_df(read_multiple_excel,
         .id = "workbook_name")

str(data_df)
library(tidyverse)
library(readxl)

files <- list.files(
  path = "./sourse/xlsx", 
  pattern = "\.xlsx$", 
  full.names = T
)

文件列表

[1] "./sourse/xlsx/df1.xlsx" "./sourse/xlsx/df2.xlsx"

sheet 个文件的列表

link <- data.frame(files = files) %>% 
  mutate(sheets = map(files, excel_sheets)) %>% 
  unnest(sheets) %>% 
  filter(sheets != "instruction")

# A tibble: 4 x 2
  files                  sheets
  <chr>                  <chr> 
1 ./sourse/xlsx/df1.xlsx sh1   
2 ./sourse/xlsx/df1.xlsx sh2   
3 ./sourse/xlsx/df2.xlsx sh1   
4 ./sourse/xlsx/df2.xlsx sh2  

结果

map2_df(.x = set_names(link$files), .y = link$sheets, read_xlsx, .id = "workbook", range = "A1:B3")

# A tibble: 8 x 3
  workbook                   x     y
  <chr>                  <dbl> <dbl>
1 ./sourse/xlsx/df1.xlsx     1     3
2 ./sourse/xlsx/df1.xlsx     2     4
3 ./sourse/xlsx/df1.xlsx     5     7
4 ./sourse/xlsx/df1.xlsx     6     8
5 ./sourse/xlsx/df2.xlsx     9    11
6 ./sourse/xlsx/df2.xlsx    10    12
7 ./sourse/xlsx/df2.xlsx    13    15
8 ./sourse/xlsx/df2.xlsx    14    16