繁体   English   中英

导入多个 excel 工作簿,每个工作簿包含 R 中的多个工作表

[英]Import multiple excel workbooks each containing multiple sheets in R

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

我尝试使用来自 rio package 的 import_list function:

library(rio)

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

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

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

这是一个解决方案,您只需指定工作簿的数量和每 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 个 wbs:

第一个工作簿的 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

而我最终的 output 是这样的数据框:

> 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM