第四章 操纵数据:重要函数的使用
目录
4-1 lapply
与循环处理有关的函数:R不仅有for/while循环语句,还有更强大的实现循环的”一句话“函数。此后我们还会介绍与排序有关的函数和总结数据信息函数。
- lapply的作用:可以循环处理列表中的每一个元素。
- lapply(参数):lapply(列表,函数/函数名, 其他参数)
- lapply的返回值:总是返回一个列表。
- sapply:简化结果
- 结果列表元素长度均为1时,返回向量
- 结果列表长度相同且大于1时,返回矩阵
str()函数的使用:
lapply()函数使用举例:
使用自定义匿名函数对处理列表:
sapply和lapply函数的区别:
4-2 apply
apply:沿着数组的某一维度处理数据
- 例如:将函数用于矩阵的行或列
- 虽然与for/while循环的效率相似,但是只用一句话就可以完成
函数形式:
- apply(参数): apply(数组,维度,函数/函数名)
对矩阵中的行或列求和或求平均:
apply()函数的复杂举例:
apply()函数的复杂举例2:
关于三维数组:
例如:apply(x, c(1, 2), mean)表示,在1, 2的两个维度上,沿着第三维求平均值。
4-3 mapply
关于mapply:
- lapply的多元版本
- mapply(参数): mapply(函数/函数名,数据,函数相关的参数)
简化list的创建过程:
创建自定义函数:
在mapply()函数中使用自定义函数,处理数据:
4-4 tapply
关于tapply函数:
- 对向量的子集进行操作
- tapply(参数):tapply(向量,因子/因子列表,函数/函数名)
创建因子:
在tapply中对数据元素进行操作:
4-5 split
关于split函数:
- 根据因子或者因子列表将向量或其他对象分组
- 通常与lapply函数一起使用
- split(参数):split(向量/列表/数据框,因子/因子列表)
向量使用split函数,进行分组:
查看之前使用过的airquality数据集,并使用split函数按月份进行分组:
table函数的使用:
结合lapply函数,使用split函数;
使用sapply函数,简化lapply函数的输出结果:
4-6 排序
R中的排序:
- sort:对向量进行排序;返回排好序的内容
- order:返回排好序的内容的下标/可以有多个排序标准
对数据框进行sort排序:
使用order对数据框进行排序(默认为升序):
使用order的多个排序标准排序:
4-7 总结数据信息
查看数据的开始或结尾:head()与tail()
对数据进行总结性了解的函数:summary()和str()
以表格的形式总结数据:table()
使用table总计两个变量:
其他的总结函数:any(), sum(), all()
总结函数的应用举例:Titanic
交叉表xtabs:
交叉表显示的“扁平化”:ftable(flat table)
统计数据的大小:object.size()与print()
4-8 小结
本章总结:
- “一句话”循环:lapply(sapply, split)/apply/mapply/tapply
- 排序:sort/order
- 总结数据信息:head/tail/summary/str/table/sum/all/xtabs/ftable/object.size