java导出excel_R如何直接读取Excel表格数据?

对于24K纯生信小白来说,数据准备绝对是一件令人头疼的问题。

还记得我第一次用ClustalX做序列Alinment时一直不出结果,折腾了一下午偶然发现出错仅仅因为文件名是中文的。经过这次教训以后,自己也养成了个习惯,不管是文件名还是表格内容绝不用中文,哪怕是用拼音表示。

在《你可能需要一个功能强大一点的文本编辑器……》一文,已介绍过用Notepad++查看Excel中不容易发现的格式错误。可还是有小白不知道啥是“制表符”,啥是文件拓展名,有时错误地将Excel表格另存成Unicode文本(*.txt)文件被虐得不要不要的。

像我这样 比较懒 心疼小白的人,不禁想问就不能省去Excel转制表符分隔的txt文件这一步,直接导入Excel数据吗?

其实,R有很多包可以实现xlsx格式数据的导入和导出,下面给大家介绍3个R包。

xlsx包

xlsx 包比较强大,可以导入和导出Excel 文档(xls 和 xlsx格式)。

它是一个基于java的R包。主要通过 read.xlsx() 和read.xlsx2() 以R数据框的形式读入 Excel sheet。二者的区别是read.xlsx2()读取数据量的大(超过100 000个单元格)的表格更快。

read.xlsx(file, sheetIndex, header=TRUE, colClasses=NA)

read.xlsx2(file, sheetIndex, header=TRUE,colClasses="character")

file :读入文件路径

sheetIndex : 读入Excel文档的表格(sheet)序号

header : 第一行是否为变量名

colClasses : 列的数据类型

示例:

#加载xlsx包

library(xlsx)

#读入工作目录中的Excel格式数据

st1

#读入指定目录中的Excel格式数据

st2

c8c788af7741d8f846cb0ee30fbccb3f.png

相应的,导出数据的函数也有两个,

write.xlsx(x, file, sheetName="Sheet1",col.names=TRUE, row.names=TRUE, append=FALSE)

write.xlsx2(x, file, sheetName="Sheet1",col.names=TRUE, row.names=TRUE, append=FALSE)

x :需要导出的数据框

file :到出文件的路径

sheetName : 导出后生成表格(sheet)的名称

col.names, row.names : 是否导出数据框的行名和列名

append : 是否以追加新sheet方式将数据导出到已有Excel文档中

示例:

#导出R自带mtcars数据为Excel数据

write.xlsx(mtcars, file="C:\\Users\\MHY\\Desktop\\mtcars.xlsx", sheetName="mtcars")

#在导出的表中追加新的sheet(R自带数据cars);

write.xlsx(cars, file="C:\\Users\\MHY\\Desktop\\mtcars.xlsx", sheetName="cars",append=TRUE)

c55eab01f813e78c82aa20e748637414.png

此外,还可调整完全用R脚本去创建1个空的Excel文档,设置单元格格式,以及在Excel表格中添加R绘制的图表等,这里就不多做介绍。

readxl包

readxl 可以很简单的将Excel文档读入到R中,R包不需要依赖java环境, 非常容易安装。如果只是读入Excel数据,也够用了。主要有read_xls()、read_xlsx()和read_excel()3个函数读入数据,三者参数一致,只不过read_excel()会自动判定数据是xls或xlsx那种类型。

read_excel(path,sheet = NULL, range = NULL, col_names = TRUE, skip = 0,…)

path : 读入文件路径

sheet :  读入Excel文档的表格(sheet)序号或名称

range : 读入数据区域,比如 "B3:D87","sheet2!B2:G14"

col_names : 第1行是否作为列名读入

示例:

library(readxl)

re

34ec911ec8123eabc18bd842b33e30ba.png

openxlsx包

类似readxl包,openxlsx包也可以很简单的将Excel文档读入到R中。

read.xlsx(xlsxFile, sheet = 1, startRow =1, colNames = TRUE,  rowNames = FALSE, …)

xlsxFile : 读入文件路径

sheet :  读入Excel文档的表格(sheet)序号或名称

startRow :  从那一行开始读入数据

colNames : 如果为TRUE,第一行数据作为列名

rowNames :   如果为TRUE, 第一列数据作为行名

示例:

library(openxlsx)

op

d6efe267c68b89903d989c1204968974.png

R包的安装

xlsx包的安装需要先安装Java。如果之前安装过Java,比如装过Cytoscape,仍然建议重新安装下Java,否则可能会因Java版本过期遇到下图这样的报错信息。

0909f6d8ae7c306d82ba42cf2f70c9d7.png

从官网下载Java的安装包,直接安装即可,安装过程中会自动检测和卸载过期的版本。

地址:https://www.java.com/en/download/windows-64bit.jsp

052b3b45069cbdffbf37cc0a6cf774aa.png

成功安装Java之后是这样的,之后就可以通过install.packages("xlsx") 安装xlsx包了。

0520c36d13aa2bb246e3f7e6f34c9d67.png

readxl包和openxlsx包的安装比较简单,直接使用install.packages()函数安装即可。

最后,从功能上来将xlsx包的功能是最强大的,但它的安装需要依赖Java环境。如何只是导入Excel数据,用readxl和openxlsx包就可以了,毕竟用R基础函数write.table()导出的文本文件也可以用Excel打开。

f3c2423fc924e6f7680f8bfd654c20b4.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值