怎么在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.WidthSpecies5.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。
声明一个工作簿对象
> # loadWorkbook(file, password=NULL) #用于声明一个工作簿对象 > # 提醒:如果excel文件不在工作空间内,file最好指定为绝对路径 > wb <- createWorkbook("iris10.xlsx")检索工作簿中的sheet
> # sheets <- getSheets(wb) #用于生成一个list对象,其中包含所有工作表的信息,数据类型为rJava::jobjRef,在此不深入讲解 > sheets <- getSheets(wb)郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,多谢。