怎么在R语言中利用xlsx包读写Excel数据

怎么在R语言中利用xlsx包读写Excel数据?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。

下载安装xlsx(Rstudio会同步下载并安装rJava, xlsxjars两个包);
> # 下载并安装xlsx包 > install.packages("xlsx") > library(xlsx)【基础】简单读取excel文件数据

假如是csv或txt等文本类的数据文件,利用R内置函数read.csv()与read.table()就可读取(注意编码格式的参数设置)。Excel由于使用范围最广,很多问题不可避免,因此,xlsx包提供了专门读取xlsx的函数read.xlsx和read.xlsx2,为什么有两个呢?请看以下区别:

函数参数
xlsx::read.xlsx()   file, sheetIndex, sheetName=NULL, rowIndex=NULL,startRow=NULL,endRow=NULL, colIndex=NULL,as.data.frame=TRUE, header=TRUE, colClasses=NA,keepFormulas=FALSE, encoding=“unknown”, password=NULL, …  
xlsx::read.xlsx2()   file, sheetIndex, sheetName=NULL, startRow=1,colIndex=NULL, endRow=NULL, as.data.frame=TRUE, header=TRUE,colClasses=“character”, password=NULL, …  

其实只是细微的差别,大家自己体会即可。下面给个参考案例:

> # 指定file和sheetIndex(或sheetName),即可定位到相应的工作表 > data1 <- read.xlsx("iris.xlsx",sheetIndex = 1) > head(data1)Sepal.LengthSepal.WidthPetal.LengthPetal.WidthSpecies
5.1   3.5   1.4   0.2   setosa  
4.9   3.0   1.4   0.2   setosa  
4.7   3.2   1.3   0.2   setosa  
4.6   3.1   1.5   0.2   setosa  
5.0   3.6   1.4   0.2   setosa  
5.4   3.9   1.7   0.4   setosa  
【基础】简单写入数据到excel文件

切莫用R内置函数read.csv()与read.table()去生成xlsx文件,会有你意想不到的麻烦,还是采用专业的包来解决问题吧。 xlsx包同样提供了两个写入数据的函数write.xlsx()和write.xlsx2(),其中细微区别自行参透(注意参数 ...)。

函数参数
xlsx::write.xlsx()   x, file, sheetName=“Sheet1”, col.names=TRUE, row.names=TRUE, append=FALSE, showNA=TRUE, password=NULL  
xlsx::write.xlsx2()   x, file, sheetName=“Sheet1”,col.names=TRUE, row.names=TRUE, append=FALSE, password=NULL, ...  

下面是参考案例:

># 指定x待写入数据,file生成的文件名,row.names为false则不生成行名,指定sheet工作表名为Sheet1 >write.xlsx(iris, file = "iris.xlsx", row.names = FALSE, sheetName = "Sheet1")

想必会有人在这里踩坑,大家应该注意到有一个append的参数,是否认为将其值设置为TRUE的话,就可以多次向表中写入数据?那就真踩坑了。查看xlsx包中的注释也很模糊:

> # a logical value indicating if x should be appended to an existing file.  > # 翻译:一个逻辑值,指示是否应该将x附加到现有文件中

附加到现有文件中,实际上是增加新的sheet,而非在原有sheet工作表中继续增加数据。如需在同一个sheet工作表中多次增加数据,请继续往下看。

【进阶】随心所欲读取excel中的各种信息

说随心所欲 一点不夸张,不仅可以取出excel中的数据,还能识别excel单元格的样式(包括颜色、字体、大小、标注、数据类型等等)。其原理与数据库有点相似,先是定义一个工作簿的对象,再基于工作簿定义里面的工作表,进而逐级查询。下面进行详细介绍:

【样例数据】文件名:iris10.xlsx。

怎么在R语言中利用xlsx包读写Excel数据

声明一个工作簿对象

> # loadWorkbook(file, password=NULL)  #用于声明一个工作簿对象 > # 提醒:如果excel文件不在工作空间内,file最好指定为绝对路径 > wb <- createWorkbook("iris10.xlsx")

检索工作簿中的sheet

> # sheets <- getSheets(wb)  #用于生成一个list对象,其中包含所有工作表的信息,数据类型为rJava::jobjRef,在此不深入讲解 > sheets <- getSheets(wb)

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。