天天看点

《R语言数据分析》——3.4 汇总函数

正如我们之前讨论过的一样,所有聚集函数都能对数据子集应用任意合法的r函数。一些r开发包为用户提供了非常方便的实现,而有少部分函数也确实要求读者要理解整个开发包的内容、特定的语法格式以及参数调优方法。

以上这些内容更深入的讨论,请参考本书第4章,以及后面的附录部分。

现在,我们将专注于简单的汇总函数,这些内容在一般的数据分析对象中应用非常普遍,例如,计算每个分组的案例数目。下面的样例也会对本章介绍的替代方法的差异进行特别说明。

现在,让我们再把目光移向plyr、dplyr和data.table,读者应该已经掌握了构建aggregate和tapply函数的方法。有了前面的实践基础,接下来的任务看起来相当容易:这次不需要调用mean函数,而是使用length函数来返回diverted列元素个数:

《R语言数据分析》——3.4 汇总函数

现在我们已经清楚周六从休斯顿出发的航班相对较少,那么我们真的有必要对这样一个简单的问题给出这样的回答?另外,我们还需要给样例个数变量进行命名吗?结果是已知的:

《R语言数据分析》——3.4 汇总函数
《R语言数据分析》——3.4 汇总函数

简而言之,不必从data.frame选择一个变量来获取它的长度,因为查询数据子集的行数更简单也更快。

当然,我们还可以找到更简单和更快的方法来获得同样的结果。也许,读者们早已想到要使用基本的table函数来执行这样一个简单的任务:

《R语言数据分析》——3.4 汇总函数

使用这个方法唯一的问题就是我们还需要对结果进行转换,例如大多数情况下是转换成data.frame。plyr包也早已实现了一个辅助函数来完成这个任务,函数的名字非常直观:

《R语言数据分析》——3.4 汇总函数

我们在结束的时候给出了一些非常简单的数据统计样例,不过仍有必要介绍如何使用dplyr对表格进行汇总。如果读者仅仅想修改之前dplyr命令,马上就会发现我们前面在plyr包中改变length或nrow函数的方法在这里行不通。stackoverf?low给出的一些说明指出我们需要使用一个名为n的辅助函数:

《R语言数据分析》——3.4 汇总函数

不过,老实说,我们真的有必要使用这样一种相对复杂的方法吗?如果读者们还记得hflights_dayofweek的结构,就马上会想到另外一种查询航班数的更简单和更快的方法:

《R语言数据分析》——3.4 汇总函数

为了确保我们还没忘记data.table的特定(美观的)语法,我们可以使用另外一个辅助函数来计算结果:

《R语言数据分析》——3.4 汇总函数

继续阅读