上一节课我们熟悉了R语言中的各种数据类型,帮大家复习一下,这些数据类型包括了向量(vector)、矩阵(matrix)、数组(array)、数据框(data.frame)和列表(list),还提到了因子(factor)。这些数据类型在我们运用R语言解决实际问题的时候都非常有用,在上节的例子中我们是在R里面直接生成的数据,但是实际数据分析中,如何快速灵活的读取和处理多种格式的外部数据呢?这节课的主要内容,我们就来讲讲R语言中数据的读取。
温馨提示
1、本节内容重点内容较多,
务必紧跟红色标记。
2、测试数据及代码
见文末客服小姐姐二维码。
上节教程结束后,有同学问:我每次用R语言解决实际问题的时候都要像第3节中那样用键盘将每个数据输入电脑里面吗?答案当然是否定的。R语言给我们配套了多种输入数据的方法和接口,能够快速灵活的处理多种格式的数据(如图1)。这节课的主要内容就是R语言中数据的输入。
图1:R语言数据输入的示意图
下面来逐一学习不同的数据导入方法。
1. 使用键盘输入数据
要求:了解
在上一次的学习中,大家已经接触了很多了创建不同类型变量的方法,这里再给大家提供几个从键盘输入数据的方法。如图2、图3、图4所示:
图2:函数read.table()的键盘输入用法
图3:函数fix()的使用(1)
图4:函数fix()的使用(2)
第一种方法是在创建data.txt字符串之后,用函数read.table()创建数据框data.1。这种用法可以让我们把数据嵌入R代码中去。此处切记,read.table()函数是我们最为常用的读取外部数据的函数,下文还会详细解读。
第二种方法是用函数fix()创建了一个和data.1一样的数据框data.2,函数edit()也有同样的效果,大家可以在帮助文档里面找一下函数edit()的具体用法。
这些在处理一些小数据集的时候是很有效的,但是面对大数据的问题就力不从心了,并且也不够灵活,而下面要介绍的方法就是要解决这两个问题。
2. 从文本文件导入数据
要求:必须掌握
在上文的第一种方法中,函数read.table()是从键盘输入的字符串变量里面创建数据框的,这种方法并不适用,实际上read.table()函数的功能要更加强大一些。函数read.table()更加常用的是从带有分隔符的文本文件中读入数据并创建数据框(实际上csv文件就是常见的带分隔符的文本文件,其分隔符是逗号“,”,csv文件可以通过文本编辑器或者excel软件创建,也可以是perl、python脚本的输出结果)。
在Rstduio中输入read之后会自动联想出函数read.table()、read.csv()和read.csv2(),这三个函数的用法比较接近,这里就只介绍read.table(),另外两个函数大家可以自己尝试。
可能有些同学已经发现在R的帮助文档里面,函数read.table()的参数很多,看上去很复杂,不用担心,实际使用中我们需要调整的参数并不多,下面列出了一些关键的参数用法:
表1:函数read.table()的参数及用法
以文件example.csv为例(测试数据见文末,联系胖雨小姐姐可得)来演示一下,文件中以逗号作分隔符,每个数据都用双引号围住。
图5:example的一部分数据
文件example.csv里面前7行是主体数据的注释,第一列是基因名。如果直接用函数read.table()读取,如图6。
图6:直接读取的示意图
图7:调整参数之后的示意图
可以看到图6中的读取效果并不理想,在图7中,加上skip和row.names两个参数之后,数据就显得有条理了。函数read.table()还有很多其他的参数,感兴趣的同学可以多尝试一下。
3. 从xlsx文件读入数据
要求:了解
对于平时更多使用excel软件的同学而言,xlsx格式的表格文件比csv要更常见,所以这里也提一下怎么把xlsx文件导入R语言(其实在excel软件包里面,大家可以直接把xlsx文件另存为csv文件,就可以直接用函数read.table()、read.csv()和read.csv2()了)。
在有些R语言教程中,推荐了R包xlsx,但是这个包依赖与xlsxjars和rJava包(关于R包的内容,请参考前期文章:挖掘GEO速成SCI文章系列教程(3)-R语言基础),以及一个正常工作的Java,安装起来较为麻烦。
这里我给大家推荐一个不需要这些依赖的R包:openxlsx(openxlsx包的安装如图8)。openxlsx包的帮助文档里介绍了三个写入数据和一个读取数据的函数,其中读取数据的函数read.xlsx()就能实现xlsx文件的读取。这个函数的命名和用法都和read.table()非常类似(如图9),大家不妨自己尝试一下如何使用这个函数。
图8:包openxlsx的安装
图9:函数read.xlsx()的参数
4. 常用的数据操作函数
要求:掌握
读取数据之后,大家就可以开始做一些简单的数据处理了。R语言中有很多常用的函数,这里先给大家一个简短的表格,供大家在读取数据后做一些练习。一些更加复杂的函数在下次再集中给大家介绍。
小结
实际上数据的读取只是R语言的冰山一角,但是也是开始一个数据分析项目的不可或缺的一步。上面只介绍了三种数据输入的方法,也是大家在自己项目中最可能遇到的情况,R语言还可以读取XML、网页、数据库(MySQL、Oracle等等)、SPSS和SAS等数据,篇幅有限,就不一一介绍了,如果有同学需要这方面的帮助,我们也可以单独再出一期和大家交流一下。当然,大家在数据准备和输入过程也可能会遇到很多问题,欢迎和我们一起交流讨论。
文末有本节课程的测试数据和代码哦~~
最后跟大家唠几句:任何事物的学习都要循序渐进,一口吃不了个胖子,希望大家能够沉下心来,力争每节课都能掌握,这样等到最后课程结束的时候,再回过来看,你会突然发现,自己已经掌握了R语言的精髓。总之,希望随着课程的推进,希望大家每天都有所收获。
说好的,期期皆有福利干货,本期干货如下:
本期干货
·
!!R语言数据导入测试代码及数据!!
原文详情:“科研猫”公众号