前面介绍了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语言内置数据集,隐藏的秘密
- 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
#利用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名女性的身高和体重 |
好多的数据集等你去挖掘,这只是冰山一角。更多内容在
总结一下:
今天,小编就讲到这里了,喜欢的小伙伴欢迎,点赞,留言,转发,收藏哦,期待你的互动。