我有一张Excel工作表,里面有不同数量的工作表(它可以有2张或3张,或者仅取决于用户)。所有工作表的标题均相同。(前两行被视为标题)
我想合并所有这些工作表并将其放入单个数据框。
这些文件为.xlsx格式。并且每张纸包含大量的行(30列和8000行)。
我是在R中读取excel文件的初学者。我正在阅读它们,同时,如果有人知道如何实现此功能,请告诉我。
Excel工作表的一个例子就是这样的数据
PS:我想以闪亮的方式实现所有这些功能。因此,请提及是否有任何有效的闪亮方法。
用户界面
fileInput('file2', h5('Choose Your Observation Data'), accept=c('text/csv','text/comma-separated-values,text/plain','.xlsx'))
服务器
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电子表格通常都是一堆令人头疼的数字疯狂的代码,并且几乎不能保证所有的列都正确地排列并一致地命名,因此该代码段采用了非常幼稚的方法。为此,我只想使用rbindlist
fromdata.table
与fill
选项来处理任何列不一致的情况。
结果并不完美(您需要处理多余的标题行),但是您正在从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,从长远来看可能会有更大的功效。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句