- 1、本文档共4页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
R实现分组汇总的几种办法.pdf
R 实现分组汇总的几种办法
分组汇总是对二维结构化数据中的某个字段(或多个字段)分组,并对组内字段进行汇
总的算法,下面的例子将展示R 语言实现分组汇总的几种办法。为了更加通用,例子中的分
组字段是2 个,汇总算法也是2 种。
案例描述:
请将数据框orders 按照CLIENT 和SELLERID 分组,并在组内对AMOUNT 字段分别求和、
求最大值。
说明:orders 存储着订单记录,其来源可以是数据库也可以是文件,比如:
orders-read.table(sales.txt,sep=\t, header=TRUE) 。其前几行数据如下:
ORDERID CLIENT SELLERID AMOUNT ORDERDATE
1 1 WVF Vip 5 440.0 2009-02-03
2 2 UFS Com 13 1863.4 2009-07-05
3 3 SWFR 2 1813.0 2009-07-08
4 4 JFS Pep 27 670.8 2009-07-08
5 5 DSG 15 3730.0 2009-07-09
方法 1:aggregate 函数
代码:
result1-aggregate(orders$AMOUNT, orders[,c(SELLERID,CLIENT)],sum)
result2-aggregate(orders$AMOUNT, orders[,c(SELLERID,CLIENT)],max)
result-cbind(result1,result2$x)
部分计算结果:
SELLERID CLIENT x result2$x
87 16 OLF 780.6 625.2
88 19 OLF 144.8 144.8
89 24 OLF 1191.2 1191.2
90 5 PAER 1414.8 1414.8
91 6 PAER 2545.2 2545.2
代码解读:
1. 从名字就可以看出,aggregate 是专用于分组汇总的函数,它的输入参数和计算结果都
是数据框,用法相对简单。
2. aggregate 函数不能对分组后的数据进行多种汇总计算,因此要用两句代码分别实现sum
和max 算法,最后再用cbind 拼合。显然,上述代码在性能和易用性上存在不足。
3. aggregate 函数对分组字段的顺序有一个奇怪的要求:必须反向排列。鉴于这个怪要求,
先对CLIENT 分组再对SELLERID 分组就必须写成:orders[,c(SELLERID,CLIENT)] 。如果
按照正常的思维习惯写代码,结果将是错误的。
4. 不仅代码的写法违反正常的思维习惯,计算后的结果也很怪异:SELLERID 字段会排在
CLIENT 之前。事实上,为了使计算结果更符合业务逻辑,上述的代码还要继续加工才
行。
总结:
aggregate 函数勉强可用,但在性能和方便性上存在不足,代码的写法、计算结果、业
务逻辑这三者不一致。
方法2:split+lapply 函数
代码:
sp-split(orders,orders[,c(SELLERID,CLIENT)],drop=TRUE)
result1-lapply(sp,FUN=function(x) sum(x$AMOUNT))
result2-lapply(sp,FUN=function(x) max(x$AMOUNT))
result-cbind(result1,result2)
部分计算结果
result1 result2
16.OLF 780.6 6
您可能关注的文档
- Newsletter-2012-07.pdf
- NORSOK标准简介.pdf
- OHSAS18000法律法规符合性评价清单.doc
- OHSAS18001标准简介.pdf
- OK_基层医疗卫生机构综合改革方法与措施.ppt
- Outlook发出dat邮件处理办法.doc
- P-18 认证档案评审及认证决定的管理程序(2011.9.19修订).pdf
- P2008实用新型专利申请与审查.ppt
- P2P网贷呼吁监管部门尽快出台细则.pdf
- patent law for new medical uses of known compounds and Pfizer Viagar patent.pdf
- 上课《归园田居(其一)》课件28张.pptx
- 色彩的魅力课件55.ppt
- 山水田园诗导学练习鉴赏.ppt
- 部编版《白鹭》课件.pptx
- 《Excel在财务中的应用》项目七 全面预算编制方法与应用 教学课件.pptx
- 《Excel在财务中的应用》项目六 利润管理决策模型与应用 教学课件.pptx
- 《Excel在财务中的应用》项目五 运营资金的管理 教学课件.pptx
- 《Excel在财务中的应用》项目四 项目投资管理决策与应用 教学课件.pptx
- 《Excel在财务中的应用》项目三 筹资管理决策模型与应用 教学课件.pptx
- 《Excel在财务中的应用》项目二 Excel 常用函数基础 教学课件.pptx
文档评论(0)