上一节课我们熟悉了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语言数据导入测试代码及数据!!
联系客服
讲师简介
上海交通大学硕士,MIT博士,长期从事医学与生物信息学研究,主要研究方向为高通量测序在肿瘤早期筛查和无创产前诊断中的临床应用,独立开发多个数据分析软件并发表相关文章(影响因子≥5分6篇,≥10分2篇),熟知R、Python、Perl及C语言等多种编程语言及程序设计,曾累计书写R代码超过5万余行。
网友评论