【问题标题】:Import multiple excel workbooks each containing multiple sheets in R导入多个 Excel 工作簿,每个工作簿都包含 R 中的多个工作表
【发布时间】:2019-11-18 22:06:07
【问题描述】:

我正在尝试导入多个 excel 工作簿文件,每个文件由 6 张工作表组成,并将它们连接到一个 R data.frame 中。我有多个工作簿文件(wb1.xlsx),每个文件由 6 张(1、2、3、4、5 和 6)组成。每个工作簿中的每个工作表都具有相同的名称(例如,在 wb1.xlsx 和 wb2.xlsx 中,两个文件中的第一个工作表称为工作表 1)。此外,每个工作表在每个其他工作表和每个其他工作簿中都有相同的标题集(例如 wb1 中的工作表 1 和 wb2 中的工作表 2 具有相同的标题)。

我尝试过使用 rio 包中的 import_list 函数:

library(rio)

DF <- import_list(dir(pattern = ".xlsx"), rbind = TRUE)

但是,这只会导入每个 Excel 工作簿的第一张工作表。我想从 excel 工作簿文件中导入每张工作表。

此外,我想在数据框中创建一个列,其中包含从中导入元素的 excel 工作簿文件的名称(例如,从 wb1.xlsx 导入的所有元素的列称为 wb1.xlsx)。

【问题讨论】:

  • 我的回答能解决你的问题吗?

标签: r excel dataframe import


【解决方案1】:

这是一个解决方案,您只需指定工作簿的数量和每 wb 的工作表数量。

library(XLConnect)
library(purrr)

number_of_sheets <- 6 
number_of_wbs <- 100
DF <- map_dfc(1:number_of_wbs, function(x) {
  wb <- loadWorkbook(paste0("wb",x,".xlsx"))
  tables <- map_df(1:number_of_sheets,function(y) readWorksheet(wb,
                                          sheet = paste0("Sheet",y)))
  colnames(tables) <- paste0("wb",x,".xlsx")
  return(tables)
} 
)

在我的模拟示例中,我有 2 个 wb:

第一个工作簿的 Sheet1 包含:

header1
0.706206019
0.929864738
0.820188853
0.822880906
0.986846159
0.201870111
0.295824333
0.682271283
0.918636814
0.308713375
0.620041348
0.396961295
0.592918544
0.813379311
0.679918546
0.149930842
0.344765206
0.454569802
0.439798642
0.79660039

第二个工作簿的 Sheet1 包含:

header1
0.359145063
0.97889235
0.561966441
0.560005392
0.37039449
0.827651329
0.428239882
0.684086633
0.376406956
0.67482297
0.088475246
0.843315296
0.478772685
0.431786377
0.213058341
0.570395357
0.418874778
0.270617596
0.0852233
0.894443579

我的最终输出是这样的数据框:

> DF
     wb1.xlsx    wb2.xlsx
1  0.74550551 0.324916411
2  0.76288674 0.503682245
3  0.98223947 0.426830680
4  0.90170329 0.813966804
5  0.56008503 0.680455280
6  0.45745945 0.001716535
7  0.14974342 0.089871648
8  0.23033300 0.362305799
9  0.57763394 0.426019894
10 0.04268935 0.055268297
11 0.26225496 0.903003228
12 0.58454780 0.836464347
13 0.43491035 0.393890841
14 0.18667029 0.147720392
15 0.81738619 0.653991709
16 0.45968982 0.209427777
17 0.13967637 0.274640492
18 0.25768938 0.522425832
19 0.66174385 0.722621747
20 0.49010581 0.689067647

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-24
    • 2021-08-09
    • 1970-01-01
    • 2021-04-19
    • 1970-01-01
    • 2019-04-28
    相关资源
    最近更新 更多