R语言-定量变量的统计描述(二)
今天我们一起来学习怎么用R语言分组对数据进行统计描述。
在比较多组的观测值时,通常是关注各组的统计描述信息,而不是对整体进行统计描述。
R语言中提供了很多基本数据集,这些数据集是可以直接加载使用的。这次我们使用鸢尾花(iris)数据集作为示例进行实战。
首先我们先来查看一下iris数据集中所包含的内容。

鸢尾花(iris)是数据挖掘常用到的一个数据集,包含150种鸢尾花的信息。每个花的特征用下面的5种属性描述:萼片长度(Sepal.Length)、萼片宽度(Sepal.Width)、花瓣长度(Petal.Length)、花瓣宽度(Petal.Width)、类(Species)。类为定性资料,分三类:setosa,versicolour和virginica,每一类含有50种鸢尾花。
使用aggregate()函数分组进行统计描述,函数的定义为:
aggregate(x, by, FUN)
x:待折叠的数据对象
by:统计标量
FUN:自定义的调用函数
如果我们想要使用aggregate()函数按照Species对其他变量分组计算平均数,该怎么实现呢?

注意:list(Species=iris$ Species)的使用,如果使用的是list(iris$ Species),则Species列则被标注为Group.1。

aggregate()函数只能返回单个统计描述结果,如果想一次性返回多个统计描述结果,该如何解决呢?
在这里我为大家介绍两个函数:by()函数和function()函数
by()函数格式:
by(data, INDICES, FUN)
data:数据框或矩阵
INDICES:定义分组
FUN:自定义的调用函数
在R中可以使用function函数进行自定义函数的编写。
例如:
想要同时得到均数、标准差和最大值的结果,我们先定义一个“a”
a<-function(x)(c(mean=mean(x),sd=sd(x),max=max(x)))
使用by()分组计算iris数据集中Sepal.Length的均数、标准差和最大值

如果有多个分组变量,可以使用by=list(name1=groupvar1, name2=groupvar2,…, groupvarN)这样的语句。
如果想一次性获得多个统计描述结果,我们还可以使用psych包中的describe.by()函数。

当然R中还要其他的包提供了分组计算描述性统计量的函数,如doBy包中的summaryBy()函数,有兴趣的同学可以研究一下。
在这里补充一个知识点:我们在最开始的时候使用attach()这个函数将iris数据集添加到R的搜索路径中,我们可以在R中直接输入iris数据集中的变量名进行调用。如果iris数据集已经使用完毕,需要使用detach()函数将数据集从搜索路径中移除。所以函数attach()和detach()最好在分析一个单独的数据集,并且不太可能有多个同名对象时使用。
请关注“恒诺新知”微信公众号,感谢“R语言“,”数据那些事儿“,”老俊俊的生信笔记“,”冷🈚️思“,“珞珈R”,“生信星球”的支持!