将excel文件读入R,并将其中的所有工作表合并到一个数据框中

我有一个不同数量的表格的Excel表(它可以有2张或3张或只是取决于用户)。 所有表格的标题都是一样的。 (前两行被认为是标题)

我想合并所有这些表单,并将其放入一个单一的数据框。

这些文件是.xlsx格式。 每张纸包含大量的行(30列和8000行)。

我是在R阅读excel文件的初学者。我正在通过他们,同时如果有人知道如何实现这一点,请让我知道。

Excel工作表的一个例子就是这样的数据

PS:我想实现这一切shiny。 所以,如果有任何有效的方法shiny请提及。

ui.R

fileInput('file2', h5('Choose Your Observation Data'), accept=c('text/csv','text/comma-separated-values,text/plain','.xlsx')) 

server.R

 b <- reactive({ fileinput2 <- input$file2 if (is.null(fileinput2)) return(NULL) #xlfile <- list.files(pattern = ".xlsx") xlfile <- fileinput2[1] wb <- loadWorkbook(xl_file) sheet_ct <- wb$getNumberOfSheets() b <- rbindlist(pblapply(1:sheet_ct, function(x) { res <- read.xlsx(xl_file, x) }), fill=TRUE) b <- b [-c(1),] print (b) }) 

您可以从百万种方式开始连接R和Excel 。 这是一个基本的片段,让你进一步使用xlsx包。 它基于java,速度很慢,因此使用进度条。

这个片段需要一个非常天真的方法,因为我见过的每一个真实的世界excel电子表格通常都是一堆数值疯狂的东西,而且很less能保证所有的列都被正确和一致地命名。 为此,我肆意使用fill选项rbindlistdata.table来处理任何列不一致。

结果是不完美的(你需要照顾额外的标题行),但是你正在从Excel读取,这也是远远不够完美的。

 library(xlsx) # excel reading library(pbapply) # free progress bars library(data.table) # rbindlist xl_file <- "Data.xlsx" wb <- loadWorkbook(xl_file) sheet_ct <- wb$getNumberOfSheets() dat <- rbindlist(pblapply(1:sheet_ct, function(x) { res <- read.xlsx(xl_file, x) }), fill=TRUE) head(dat) ## EN MN ED HO TM SL PH DI TA DI.1 CH PI ## 1: # # day hour degC NA NA µmol/L µmol/kg µmol/L µg/L µmol/L ## 2: 1 1 1 12 9.9 31.23 7.82 2126.1575 2151 15.3 0.93 NA ## 3: 1 1 2 36 9.59 31.17 7.84 2120.4175 2150 14.2 1.2044 0.69 ## 4: 1 1 3 60 9.65 31.13 7.84 2110.885 2143 14.3 0.9137 2.85 ## 5: 1 1 4 84 10.36 31.16 7.83 2105.4525 2137 13.8 0.7189 7.29 ## 6: 1 1 5 108 10.06 31.13 7.84 2106.4775 2139 13.7 0.317 5.24 ## PO PN PP DC DN DP TP Exp.num Mesocosm ## 1: µmol/L µmol/L µmol/L µmol/L µmol/L µmol/L µmol/L NA NA ## 2: NA 2.319 0.032 100.4 NA NA 5.6306 NA NA ## 3: 24.16 2.598 0.048 104.5 NA NA 2.3034 NA NA ## 4: 34.815 2.095 0.059 NA NA NA 2.5594 NA NA ## 5: 40.999 2.186 0.056 97.5 NA NA 5.8865 NA NA ## 6: 37.751 2.173 0.081 NA NA NA 6.1425 NA NA ## Exp.day Hour Temperature Salinity pH DIC DIN Chl.a PIC POC PON POP DOC ## 1: NA NA NA NA NA NA NA NA NA NA NA NA NA ## 2: NA NA NA NA NA NA NA NA NA NA NA NA NA ## 3: NA NA NA NA NA NA NA NA NA NA NA NA NA ## 4: NA NA NA NA NA NA NA NA NA NA NA NA NA ## 5: NA NA NA NA NA NA NA NA NA NA NA NA NA ## 6: NA NA NA NA NA NA NA NA NA NA NA NA NA ## DON DOP TEP ## 1: NA NA NA ## 2: NA NA NA ## 3: NA NA NA ## 4: NA NA NA ## 5: NA NA NA ## 6: NA NA NA 

另一种方法是将您的Excel文件批量转换为CSV ,从长远来看,这可能具有更高的效率。