网站大量收购独家精品文档,联系QQ:2885784924

R实现固定分组汇总的方法.pdfVIP

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
R实现固定分组汇总的方法

R 实现固定分组汇总的方法 组名称和组数量已知的分组汇总被称为固定分组汇总,此类算法的分组依据来自于数据 集之外,比如:按照参数列表中的客户名单分组,或按照条件列表进行分组。此类算法会涉 及分组依据是否超出数据集、是否需要多余的组、数据是否重叠等问题,解决起来有一定的 难度。下面将介绍R 语言实现固定分组汇总的方法。 案例 1:分组依据不超出数据集 数据框sales 是订单记录,其中CLIENT 列是客户名,AMOUNT 列是订单金额,请将sales 按照“潜力客户列表”进行分组,并对各组的 AMOUNT 列汇总求和。潜力客户列表为 [ARO, BON,CHO],该列表恰好是CLIENT 列的子集。 说 明 : sales 的 来 源 可 以 是 数 据 库 也 可 以 是 文 件 , 比 如 : 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 代码: byFac-factor(sa les$CLIENT,levels=c(ARO,BON,CHO)) result-aggregate(sales$AMOUNT,list(byFac),sum) 计算结果: Group.1 x 1 ARO 899.0 2 BON 2564.4 3 CHO 1174.0 代码解读: 1. 函数factor 生成了一个分组依据(在R 中被称为因子),函数aggregate 按照分组依据进 行分组汇总,整段代码的结构非常清晰。 2. 需要注意的是,分组依据不是向量或数组,因此不能直接写成 byFac- c(ARO,BON,CHO) 。分组依据也不能直接使用,还需要转化成list 类型。这些方面是 初学者不易理解的地方,尤应注意。 3. 如果以CLIENT 列为分组依据(即非固定分组),则只需一句代码就能实现: result-aggregate(sales$AMOUNT,list(sales$CLIENT),sum ) 总结: 使用aggregate 可以轻松实现本案例。 案例2:分组依据超出数据集 分组依据仅限于列数据,这属于特殊情况,实际上由于分组依据来自于数据集之外(比 如外部参数),它的成员很可能不在列数据中。本案例试图解决这样的问题。 假设 “潜力客户列表”的值为[ARO, BON,CHO,ZTOZ],请将sales 按照“潜力客户列表” 将数据分为四组,并对各组的AMOUNT 列汇总求和。注意,客户ZTOZ 不在CLIENT 列中。 与案例1 类似的代码: byFac-factor(sales$CLIENT,levels=c(ARO,BON,CHO, ZTOZ)) result-aggregate(sales$AMOUNT,list(byFac),sum) 上述代码的计算结果是: Group.1 x 1 ARO 899.0 2 BON 2564.4 3 CHO 1174.0 可以看到,计算结果中只有三组数据,缺失了 ZTOZ ,而不是要求中的四组。显然,上 述代码不能实现本案例,需要改进。 改进后的代码: byFac-factor(sales$CLIENT,levels=c(ARO,BON,CHO,ZTOZ)) tapply(sales$AMOUNT, list(byFac ),function(x) sum(x)) 计算结果: ARO

文档评论(0)

wannian118 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档