我有一张excel表,里面有不同数量的纸张(它可以有2张或3张或者只取决于用户)。 所有表格的标题都相同。 (前两行被视为标题)
我想合并所有这些工作表并将其放入单个数据框中。
文件为.xlsx格式。每张纸都包含大量行(30列和8000行)。
我是读R中的excel文件的初学者。我正在浏览它们,如果有人知道如何实现这一点,请告诉我。
Excel工作表的一个例子是这样的Data
PS:我想在闪亮的环境中实现这一切。所以,请提及是否有任何有效的闪亮方法。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)
})
答案 0 :(得分:2)
您可以从A million ways to connect R and Excel开始。这是一个基本的片段,可以帮助您进一步使用xlsx
包。它是基于java的,它是低级的,因此使用了进度条。
这个片段采取了一种非常天真的方法,因为我所见过的每一个真实世界的电子表格通常都是一堆数字疯狂,并且很少能保证这些列都排列正确且一致地命名。为此,我只想使用rbindlist
中的data.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
另一种方法是batch convert your Excel files to CSV,从长远来看可能会有更多功效。