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

讨论

我有一张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)
   })
hrbrmstr

您可以从一百万种连接R和Excel的方法开始这是一个基本代码片段,可让您进一步使用该xlsx软件包。它是基于Java的,并且很慢,因此使用进度条。

由于我所见过的每个现实世界中的excel电子表格通常都是一堆令人头疼的数字疯狂的代码,并且几乎不能保证所有的列都正确地排列并一致地命名,因此该代码段采用了非常幼稚的方法。为此,我只想使用rbindlistfromdata.tablefill选项来处理任何列不一致的情况。

结果并不完美(您需要处理多余的标题行),但是您正在从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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

R循环:将工作表合并到一个表中并在Excel中导出

将每日和定期数据合并到一个数据框中

通过匹配r中的值和列名,将一个数据框的值合并到另一个数据框

使用R将多个数据框导出到一个Excel工作表

将所有数据合并到新的工作表中,第一工作表除外

将多个文件合并到一个数据框中

将所有数据合并到一个新的工作表中

是否可以将R中的多个数据帧合并为一个数据,其中所有列的键都相同

如何更改订单列并将其合并到一个熊猫数据框中?

合并地图的所有值,其中每个值都是一个数据框

将多个数据框合并到一个csv文件中,每个数据框用一个空行分隔

将多个CSV合并到一个数据框中

将多个文件读入并合并或合并到公共ID列的一个数据帧中

如何将Excel工作表读入R中的一个数据框中并跳过某些行

将Excel文件工作簿合并到一个文件夹中

VLOOKUP并将工作表合并到一个文件

如何在R中的一个csv excel文件的多个工作表中写入多个数据框?

将R中的两个列表合并到一个数据框中

如何将多个数据框合并到一个表中并导出到Excel?

将许多XML文件合并到R中的一个数据帧中

将两列数据框合并到一个包含所有独特案例的新列中

将名称相似的文件合并到一个数据框中

从多个链接中抓取表格数据并将其合并到一个 Excel 文件中

如何通过pandas将多个工作表中的列合并到一个excel文件中

将三个带有 where 子句的选择查询合并到一个数据表中

将数据框的所有列合并到一个回归中

将具有多张工作表的 excel 文件合并到一个数据框中

将数百个带有路径引用的 excel 文件合并到一个 pandas 数据框中

加载文件夹内所有文件的特定列,并将它们合并到同一个数据框中