作者:leengsmile
链接:https://www.jianshu.com/p/bfddfe29aa39
來源:简书

一、使用的数据集

| year| name| percent| sex|
|---------:||---------:||---------:||---------:|
| 1880| John| 0.081541| boy|
| 1880| William| 0.080511| boy|
| 1880| James| 0.050057| boy|
| 1880| Charles| 0.045167| boy|
| 1880| George| 0.043292| boy|
| 1880| Frank| 0.02738| boy|
| 1880| Joseph| 0.022229| boy|
| 1880| Thomas| 0.021401| boy|

该表是美国新生儿的取名汇总表。

二、plyr包函数

1、每年包含的记录数

record_count <- function(df) {return(data.frame(count = nrow(df)))
}
ddply(baby_names,     # 数据集.(year),        # 分类的标准record_count    # 函数
)

2、男孩、女孩名的各自排名

以2008年的数据为例,男孩名"Jacob"的比例最高,排名应当是第一,"Michael"紧跟其后,排名应当第二,依此类推。对于女孩名,"Emma"排名第一,"Isabella"排名第二,"Emily"排名第三等等。我们希望得到这样的结果。

对于2008年的数据,可以通过简单的rank即可得到,不过要对男孩和女孩分别排序。

baby_names_2008_boy <- subset(baby_names_2008, sex == "boy") # 获取男孩名
baby_names_2008_boy$rank <- rank(- baby_names_2008_boy$percent) # 排序
head(baby_names_2008_boy) # 查看

使用ddply函数

ddply(baby_names, .(year, sex), transform, rank = rank(-percent, ties.method = "first")
)

3、排名前100的男孩名与女孩名在当年中的比例

baby_names_top100 <- subset(baby_names, rank <= 100)  # 将前100排名的数据筛选出来
baby_names_top100_trend <- ddply(baby_names_top100, .(year, sex), # 按年和性别分割summarize, # 汇总数据trend = sum(percent)) # 汇总方式(求和)

这里出现一个新的操作函数summarize(),该函数是对数据做汇总,与transform不一样的是,该函数并不追加结果到原始数据,而是产生新的数据集。比如想知道,2008年的男孩名中,排名最高和最低的名字的百分比之差,可以通过如下方式求得:

summarize(baby_names_2008_boy, trend = max(percent) - min(percent))
# 0.010266

[Rpackage]R语言plyr包使用方法——可进行类似数据透视表的操作相关推荐

  1. R语言plyr包round_any函数将向量数据近似到任意精度实战

    R语言plyr包round_any函数向量将数据近似到任意精度实战 目录 R语言plyr包round_any函数向量将数据近似到任意精度实战 #导入plyr包 #仿真数据

  2. R语言dplyr包使用transmute函数生成新的数据列(删除所有原数据列)实战

    R语言dplyr包使用transmute函数生成新的数据列(删除所有原数据列)实战 目录 R语言dplyr包使用transmute函数生成新的数据列࿰

  3. R语言dplyr包使用mutate函数生成新的数据列(不改变原数据列)实战

    R语言dplyr包使用mutate函数生成新的数据列(不改变原数据列)实战 目录 R语言dplyr包使用mutate函数生成新的数据列(不改变原数据列)实战

  4. R语言dplyr包sample_n函数、sample_frac函数数据采样实战

    R语言dplyr包sample_n函数.sample_frac函数数据采样实战 目录 R语言dplyr包sample_n函数.sample_frac函数数据采样实战 #导入dplyr包

  5. R语言tidyr包pivot_longer函数、pivot_wider函数数据表变换实战(长表到宽表、宽表到长表)

    R语言tidyr包pivot_longer函数.pivot_wider函数数据表变换实战(长表到宽表.宽表到长表) 目录

  6. R语言dplyr包na_if函数根据条件将数据对象替换为NA值实战

    R语言dplyr包na_if函数根据条件将数据对象替换为NA值实战 目录 R语言dplyr包na_if函数根据条件将数据对象替换为NA值实战 #导入dplyr包

  7. R语言survival包的survfit函数拟合生存曲线数据、survminer包的ggsurvplot函数可视化生存曲线、size参数指定曲线粗细、palette参数自定义生存曲线的颜色

    R语言survival包的survfit函数拟合生存曲线数据.survminer包的ggsurvplot函数可视化生存曲线.size参数指定曲线粗细.palette参数自定义生存曲线的颜色 目录

  8. R语言survival包的survfit函数拟合生存曲线数据、survminer包的ggsurvplot函数可视化生存曲线、绘制分面生存曲线(facet_grid)

    R语言survival包的survfit函数拟合生存曲线数据.survminer包的ggsurvplot函数可视化生存曲线.绘制分面生存曲线(facet_grid) 目录

  9. R语言survival包的survfit函数拟合生存曲线数据、survminer包的ggsurvevents函数可视化生存时间分布图、设置normalized参数归一化比例结果

    R语言survival包的survfit函数拟合生存曲线数据.survminer包的ggsurvevents函数可视化生存时间分布图.设置normalized参数归一化比例结果 目录

最新文章

  1. linux网络工程师证书,网络工程师应该考什么证
  2. PDF 补丁丁 0.5.0.2078 测试版发布:不用打字,也能加书签
  3. 【Python学习系列十三】Python机器学习库scikit-learn实现逻辑回归
  4. Spring(5)——Spring 和数据库编程
  5. mysql中if在oracle怎么用_mysql和oracle的mybatis操作
  6. left join 多条件_第九篇|Spark的五种JOIN策略解析
  7. mybatis中使用SqlSessionManager进行insert操作
  8. 132.Function Handing 函数
  9. Bootstrap 按钮的使用
  10. 用python完成《商务与经济统计(13版)》课后练习及案例分析——第2章和第3章
  11. php扩展 ioncube组件的安装方法_安装IonCube Loader扩展方法
  12. 亚马逊运营教程,三招学会亚马逊
  13. html5怎么设置表格背景颜色,Echart 如何设置表格内的背景颜色?
  14. 全国市场调查大赛经验分享(二)
  15. 阿里云国际站代充值个人注册与分销商邀约区别
  16. 10句Twitter上流行的微博语录
  17. python不支持下标访问,Python支持使用字典的“键”作为下标来访问字典中的值。...
  18. PMP学习笔记 第3章 项目经理的角色
  19. web攻防之跨站脚本攻击漏洞
  20. 快学excel-VBA创建数据透视表

热门文章

  1. net+惠民线上诊疗系统 毕业设计-附源码161026
  2. datetimeformat和jsonformat的区别
  3. android如何做一个按钮,如何制作一个Android凸起按钮?
  4. 服务器安全部署注意事项
  5. 运用JavaScript实现网页上图片与文字的放大与缩小
  6. java maxpermsize 设多少_Xms Xmx PermSize MaxPermSize 区别
  7. 彻底删除mac上的Win10分区
  8. Swift 简介 - 苹果最新的编程语言
  9. 链路日志中追踪traceId
  10. NYOJ-1236-挑战密室