前面介绍了R的统计函数,见:R语言的各种统计分布函数,你应该了解的都在这!有好多小伙伴通过留言反馈,说这些统计函数都是需要数据来演示的,但是自己对R语言的数据结构还不是很清楚,今天我们就聊一下R中关于数据那点事,主要是复习一下R里面的数据类型数据格式,然后带领大家多认识一些R里面内置的数据集。
首先要回答下面几个问题:
- atomic vector的常用基本类型是什么?
- list和atomic vector有哪些不同?
- matrix和data frame有什么不同?
- data frame的列可以保存list吗?
- data frame的每一行或者每一列的长度可以不一致吗?
- 如何将factor正确地转换为数字?
回答上面的问题,你差不多就大题了解了一些;
1.R语言数据结构是个啥?
R的数据结构是数据类型的封装方式,就是怎么把各种数据类型的数据组合起来,储存相同类型的数据的(同质的),储存不同类型的数据的(异质的),
在R中数据类型被分为字符型(character), 浮点型(double),整数型 (integer)以及逻辑型(logical)。
浮点型及整数型类型又被统一称为数值型。如果数据都为字符型,或者数值型,或者逻辑型,就被称为同质的,否则被称为异质的。
R语言的数据结构
说到这,想必大家对R中的数据有了很深的了解,R也很贴心,有大量的R的内置数据集:
R语言内置数据集,隐藏的秘密
- Vectors
无论是atomic vector还是list,都属于vector。这两者构成了R最基本的两大类数据结构。
Atomic vector与list的区别在于,前者的元素都必须是由同一数据类型组成的,也就是说atomic vector都是同质的,而list中的元素可以是异质的。
在任何时候,c( )函数都是可以构建向量,下面是R中内置的向量数据包:
R中的数据包 | 数据内容 |
---|---|
euro | 欧元汇率,长度为11,每个元素都有命名 |
landmasses | 48个陆地的面积,每个都有命名 |
precip | 长度为70的命名向量 |
rivers | 北美141条河流长度 |
state.abb | 美国50个州的双字母缩写 |
state.area | 美国50个州的面积 |
state.name | 美国50个州的全称 |
- Factor
Factor是R中非常具有特点的一类atomic vector。
- Factor是atomic vector,所以它的所有元素必须是同质的,准确地讲其基础类型应该是character。
- Factor又不同于普通的character型atomic vector。
- Factor是将相同字符归类后使用特定格式存放的数据。
- 它有levels()方法,可以得到一个factor中所有的水平(去除重复后所有的元素)。
创建因子向量分为三个步骤:
- 将输入的数据转换成character型;
- 对所有的水平进行排序(可能是指定的排序,或者自然排序),将排序后的水平保存在levels中;
- 使用levels中的水平序列号重新编码输入的元素。
注意:
- Factor的值必须是levels中包含的值,否值无法对其编码。
- 如果想修改factor中所有等于某值的数据为level中不存在的另一数值,应该直接修改其levels。
下面是R中内置的因子向量数据包:
R中的数据包 | 数据内容 |
---|---|
state.division | 美国50个州的分类,9个类别 |
state.region | 美国50个州的地理分类 |
- Matrices and Data Frame
简单的讲,给atomic vector加上维度信息,它就变成了数组array。如果维度信息是二维的,它就是matrix。也就是说,matrix只是array的一个特例,而array是从atomic vector扩展而来的。
让我们创建一个matrix
代码语言:javascript复制#利用matrix()函数构建矩阵
a <- 1:12
mat <- matrix(a, ncol=3, nrow=4) ##ncol == number of column, nrow == number of row
mat
DataFrame
Data frame是R中最常被用到的数据结构。Data frame就是由一系列长度相等的vectors构成。访问某一列可以使用'$'符号,它是2维的,它一样也有和matrix相同的方法,比如colnames(), rownames(), rbind(), cbind(), dim(), ncol(), nrow()等。
下面列出了R中的矩阵,数据框的数据包:
R中的数据包(矩阵,数据框) | 数据内容 |
---|---|
euro.cross | 11种货币的汇率矩阵 |
freeny.x | 每个季度影响收入四个因素的记录 |
state.x77 | 美国50个州的八个指标 |
USPersonalExpenditure | 5个年份在5个消费方向的数据 |
VADeaths | 1940年弗吉尼亚州死亡率(每千人) |
volcano | 某火山区的地理信息(10米×10米的网格) |
WorldPhones | 8个区域在7个年份的电话总数 |
iris3 | 3种鸢尾花形态数据 |
Titanic | 泰坦尼克乘员统计 |
UCBAdmissions | 伯克利分校1973年院系、录取和性别的频数 |
crimtab | 3000个男性罪犯左手中指长度和身高关系 |
HairEyeColor | 592人头发颜色、眼睛颜色和性别的频数 |
occupationalStatus | 英国男性父子职业联系 |
airquality | 纽约1973年5-9月每日空气质量 |
anscombe | 四组x-y数据,虽有相似的统计量,但实际数据差别较大 |
attenu | 多个观测站对加利福尼亚23次地震的观测数据 |
attitude | 30个部门在七个方面的调查结果,调查结果是同一部门35个职员赞成的百分比 |
beaver1 | 一只海狸每10分钟的体温数据,共114条数据 |
beaver2 | 另一只海狸每10分钟的体温数据,共100条数据 |
BOD | 随水质的提高,生化反应对氧的需求(mg/l)随时间(天)的变化 |
cars | 1920年代汽车速度对刹车距离的影响 |
chickwts | 不同饮食种类对小鸡生长速度的影响 |
esoph | 法国的一个食管癌病例对照研究 |
faithful | 一个间歇泉的爆发时间和持续时间 |
Formaldehyde | 两种方法测定甲醛浓度时分光光度计的读数 |
Freeny | 每季度收入和其他四因素的记录 |
dating from | 配对的病例对照数据,用于条件logistic回归 |
InsectSprays | 使用不同杀虫剂时昆虫数目 |
iris | 3种鸢尾花形态数据 |
LifeCycleSavings | 50个国家的存款率 |
longley | 强共线性的宏观经济数据 |
morley | 光速测量试验数据 |
mtcars | 32辆汽车在11个指标上的数据 |
OrchardSprays | 使用拉丁方设计研究不同喷雾剂对蜜蜂的影响 |
PlantGrowth | 三种处理方式对植物产量的影响 |
pressure | 温度和气压 |
Puromycin | 两种细胞中辅因子浓度对酶促反应的影响 |
quakes | 1000次地震观测数据(震级>4) |
randu | 在VMS15中使用FORTRAN中的RANDU三个一组生成随机数字,共400组。该随机数字有问题。在VMS20以上版本已修复。 |
rock | 48块石头的形态数据 |
sleep | 两药物的催眠效果 |
stackloss | 化工厂将氨转为硝酸的数据 |
swiss | 瑞士生育率和社会经济指标 |
ToothGrowth | VC剂量和摄入方式对豚鼠牙齿的影响 |
trees | 树木形态指标 |
USArrests | 美国50个州的四个犯罪率指标 |
USJudgeRatings | 43名律师的12个评价指标 |
warpbreaks | 织布机异常数据 |
women | 15名女性的身高和体重 |
好多的数据集等你去挖掘,这只是冰山一角。更多内容在
R语言系列:探索R自带数据包
总结一下:
今天,小编就讲到这里了,喜欢的小伙伴欢迎,点赞,留言,转发,收藏哦,期待你的互动。
后起之秀奔涌而至,欢迎大家在《生信技能树》的舞台分享自己的心得体会!
上面是新晋小编“十年”的稿件
再怎么强调生物信息学数据分析学习过程的计算机基础知识的打磨都不为过,我把它粗略的分成基于R语言的统计可视化,以及基于Linux的NGS数据处理:
- 《生信分析人员如何系统入门R(2019更新版)》
- 《生信分析人员如何系统入门Linux(2019更新版)》
把R的知识点路线图搞定,如下:
- 了解常量和变量概念
- 加减乘除等运算(计算器)
- 多种数据类型(数值,字符,逻辑,因子)
- 多种数据结构(向量,矩阵,数组,数据框,列表)
- 文件读取和写出
- 简单统计可视化
- 无限量函数学习