20190428-R语言循环函数aggregate、by

Python012

20190428-R语言循环函数aggregate、by,第1张

-Usage

aggregate(x, by, FUN, ..., simplify = TRUE, drop = TRUE)

与tapply类似,但是x可以为data.frame或矩阵

-Arguments

by

a list of grouping elements, each as long as the variables in the data frame x. The

elements are coerced to factors before use.

-Example

-Usage

by(data, INDICES, FUN, ..., simplify = TRUE)

-Example

将warpbreaks的一二列,根据tension这一列的(L、M、H)运行summary

aggregate与by的区别 :aggregate是对x的每一列分别根据因子进行分组计算,而by是根据因子将data整个分成几个小的data.frame,然后进行运算;

数据准备

R函数的诸多有趣特性之一,就是它们可以应用到一系列的数据对象上,包括标量、向量、矩阵、数组和数据框。

R中提供了一个apply()函数,可将一个任意函数“应用”到矩阵、数组、数据框的任何维度上。

apply(x, MARGIN, FUN, ..., simplify = TRUE)

其中,x为数据对象,可以是数组、矩阵、数据框,数据至少是二维的,MARGIN是维度的下标,MARGIN=1表示行,MARGIN=2表示列。FUN是自定义调用的函数,可为任意R函数,而...则包括了任何想传递给FUN的参数。

apply函数只能用于处理矩阵类型的数据,也就是说所有的数据必须是同一类型。因此要使用apply函数的话,需要将数据类型转换成矩阵类型。

lapply(x, FUN)

lapply函数将函数应用于输入变量x的每一个元素,返回一个与x长度相同的列表。x可以是列表,向量或数据框。

sapply(x, FUN)

x可以是列表,矩阵或数据框,以向量或矩阵形式输出结果。执行的功能与lapply函数相同。

tapply(X, INDEX, FUN = NULL)

tapply用于数据框类型的数据,可以按因子变量分组计算统计量。X可以是数组、矩阵、数据框等分割型数据向量,INDEX是一个或多个因子的列表,每个因子的长度都与x相同,FUN为自定义的调用函数。 53

参考资料:

链接: http://www.bio-info-trainee.com/4385.html

我做题的时候主要翻阅学习了《R语言实战》里统计相关内容。

需要掌握R内置数据集及R包数据集

鸢尾花(iris)数据集,包含150个鸢尾花的信息,共五列,分别为萼片长度(Sepal.Length)、萼片宽度(Sepal.Width)、花瓣长度(Petal.Length)、花瓣宽度(Petal.Width)和种类(Species)。前四列为定量数据,后一列种类为定性数据,是非连续的字符变量。

定量数据的集中趋势指标主要是:众数、分位数和平均数

定量数据的离散趋势指标主要是:极差,方差和标准差,标准分数,相对离散系数(变异系数),偏态系数与峰态系数

分组统计,最一开始是想将数据集分成三个数据框,重复之前函数,有几个方法:

或者不分开,之前对原数据集计算:

apply函数可以解决数据循环处理的问题,可以对矩阵、数据框、数组(二维、多维),按行或列进行循环计算,对子元素进行迭代,并把子元素以参数形式给自定义的FUN函数中,并返回计算结果。

函数定义:

apply(X,MARGIN,FUN,...)

参数列表:

用来对list、data.frame进行循环,并返回和X长度同样的list结构作为结果集。

同lapply函数,多了2个参数simplify和USE.NAMES,返回值为向量,不是list对象。

类似sapply函数,提供了FUN.VALUE参数,用来控制返回值的行名。

类似sapply函数,第一个参数为FUN,可接受多个数据。

tapply函数用于分组的循环计算,相当于group by的操作。

函数定义:

tapply(X,INDEX,FUN,simplify,...)

参数列表:

只处理list类型数据,对list的每个元素进行递归遍历,如果list包括子元素则继续遍历。

R可以计算多种相关系数,包括Pearson相关系数、Spearman相关系数、Kendall相关系数、偏相关系数、多分格相关系数、多系列相关系数。cor()函数可以计算前三种相关系数,cov()函数可以计算协方差。

数据的标准化是指中心化之后的数据在除以数据集的标准差,即数据集中的各项数据减去数据集的均值再除以数据集的标准差。scale()函数可以完成标准化。

mtcars数据集是32辆汽车在11个指标上的数据。

airway包是8个样本的RNA-seq数据的counts矩阵,这8个样本分成2组,每组是4个样本,分别是 trt 和 untrt 组。

t检验是一种可用于比较的假设检验。

理解t检验:一个年纪共有好多学生,需要研究他们的平均身高。这时,这批学生是我们 要研究的对象 ,即 总体 。从这个年纪中每个班级随机挑选10名同学,这部分同学则为 样本 ,通过样本来对总体的某个统计特征(比如上面研究的平均值、众数、方差等)做判断的方法为 假设检验 。

一个针对两组的独立样本t检验可以用于检验两个总体的均值相等的假设,检验调用格式为:

t.test( y ~ x, data )

其中y是一个数值型变量,x是一个二分变量。

t.test(y1,y2)

其中y1、y2为数值型向量。

现在还不能用自己的语言解释清楚,整合几篇写的比较详细的教程:

http://www.biye5u.com/article/R/2019/6399.html

https://www.jianshu.com/p/67be9b3806cd

统计这部分还是似懂非懂的状态,继续学习~

更多学习资源:

生信技能树公益视频合辑

生信技能树账号

生信工程师入门最佳指南

生信技能树全球公益巡讲

招学徒

...

你的宣传能让数以万计的初学者找到他们的家,技能树平台一定不会辜负每一个热爱学习和分享的同道中人