03.数据框处理基本操作(未完待续)
第一,这一节讲什么?
这一节讲述一些关于R语言处理数据框的基本操作
根据我平时工作的经验,只将一些最常用的操作介绍给大家
第二,这一节如何讲?
我会提供一些示例数据,然后大家根据我的讲述,一一朝下操作
在操作过程中,我会强调自己认为一些比较重要的点
第三,这一节的目的?
数据框的基本操作,当然是为了后面的实际案例操作做好准备了
数据格式说明
生信分析的大部分结果是表格形式,这个表格文件的格式一般为txt文档。
这些txt文档的列通常为tab
制表符分割,如果使用Notepad++打开文档的话,你可能会看到类似下面的结果
不同列之间的
→
即上面所说tab
制表符,纯文本形式表示为\t
制表符一般是不可见,同样不可见的常用字符还有每行结束时的换行符
\n
, 以及空格Notepad++是一个常用的文本编辑器,在视图设置里可以将所有字符显示出来,例如在上图中,空格和制表符分别被显示为
·
和→
稍微啰嗦一下,为什么生信的结果多以txt文档和csv文档(以,
分割的表格)?
原因有两个:
-
excel文档有行数上限,对2003版最大行数是65536行,对2007以上版本,最大行数是1048676行;生信分析结果数据量较大,有时候会有限制
-
excel不是纯文本格式(主要原因),生信分析基本都在Linux操作系统下完成,而excel文件在Linux系统下是无法直接处理的
写到这里,我实在忍不住想要吐槽一下微软,这真是一个神奇的公司……生信人员必须掌握的技能表中,
dos2unix
一定是名列前茅的……感觉有点莫名其妙的同学请跳过这段吐槽哈~~~
对于大多数非生信专业同学,可以鼠标右键选择excel方式打开;或者直接将文件后缀修改为xls,然后就可以直接用excel打开了。但是请大家务必注意,excel会自动将时间类的字符进行转化,例如在excel中输入Sep 2
字符会自动变为2-Sep
。
测试数据说明
数据存放在百度网盘test_data目录下,链接: https://pan.baidu.com/s/1a8f7FVGtviIBebf0E_6VYg 提取码: ncxw
lncbook_disease.txt 是我从LncBook数据库下载的疾病相关lncRNA
LncRNADisease_experimental_supported_disease_2017.txt是我从LncRNADisease数据库下载的经过实验验证的疾病相关lncRNA
以lncbook_disease.txt文件为例,文件打开后有很多内容,但是我们只用下面图片显示的几列就够了
第一行是表头
第一列是LncBook数据库id,后面几列是对该LncRNA的注释,如相关的疾病和基因等
一个id可能注释有多个信息
有的单元格是空的,有的单元格内容为NA,这些都表示此处无内容
image数据框读取
数据框读取的时候,大家可能会比较熟悉read.table
函数。但是我比较推荐read.delim
函数,读取我上面说的生信格式文件会更加方便。
在下面的案例中,可以看到,read.table
函数会报错。
另外一点,虽然read.delim
函数默认参数sep='\t',header = TRUE
,但是我每次都会自己手动写出来。这样会增加自己对于即将处理的数据的熟悉度,算是个人一个小的工作习惯。
> table_df <- read.table('lncbook_disease.txt',sep='\t',header = TRUE)
Error in scan(file = file, what = what, sep = sep, quote = quote, dec = dec, :
line 10 did not have 10 elements
> delim_df <- read.delim('lncbook_disease.txt',sep='\t',header = TRUE)
为什么此处
read.table
使用会出错,我暂时不做过多解释。如果有人比较纠结这个事情的话,可以尝试一下下面的代码。table_df <- read.table('lncbook_disease.txt',sep='\t',header = TRUE, quote = '')