《R语言数据分析》——3.4 汇总函数-阿里云开发者社区

开发者社区> 华章计算机> 正文

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

简介:
+关注继续查看

本节书摘来自华章出版社《R语言数据分析》一书中的第3章,第3.4节,作者盖尔盖伊·道罗齐(Gergely Daróczi),潘怡 译,更多章节内容可以访问云栖社区“华章计算机”公众号查看。

3.4 汇总函数

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

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

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

统计子分组样例数

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

QQ_20170525134837

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

QQ_20170525134841
QQ_20170525134847

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

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

QQ_20170525134853

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

QQ_20170525134858

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

QQ_20170525134903

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

QQ_20170525134907

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

QQ_20170525134910

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
怎么设置阿里云服务器安全组?阿里云安全组规则详细解说
阿里云服务器安全组设置规则分享,阿里云服务器安全组如何放行端口设置教程
6417 0
SAS进阶《深入分析SAS》之数据汇总和展现
SAS进阶《深入分析SAS》之数据汇总和展现 1. 通过Print过程制作报表 proc print <data=数据集>; run; 选项: obs=修改观测序号列标签 noobs不显示观测序列号 id语句在输出中取代观测序列 var选择输出的变量 where语句选择输出的观测 总结如下: proc print data=数据集<选项&g
1164 0
strcmp函数实现及分析
最近看C,看到strcmp函数,对它的实现原型不很清楚,于是到网上搜。网上算法一大堆,看了很多代码后自己做了一下总结  strcmp函数是C/C++中基本的函数,它对两个字符串进行比较,然后返回比较结果,函数形式如下:int strcmp(const char* str1, const char* str2); 其中str1和str2可以是字符串常量或者字符串变量,返回值为整形。
1321 0
10059
文章
0
问答
来源圈子
更多
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
文娱运维技术
立即下载
《SaaS模式云原生数据仓库应用场景实践》
立即下载
《看见新力量:二》电子书
立即下载