[Rpackage]R语言plyr包使用方法——可进行类似数据透视表的操作
作者: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包使用方法——可进行类似数据透视表的操作相关推荐
- R语言plyr包round_any函数将向量数据近似到任意精度实战
R语言plyr包round_any函数向量将数据近似到任意精度实战 目录 R语言plyr包round_any函数向量将数据近似到任意精度实战 #导入plyr包 #仿真数据
- R语言dplyr包使用transmute函数生成新的数据列(删除所有原数据列)实战
R语言dplyr包使用transmute函数生成新的数据列(删除所有原数据列)实战 目录 R语言dplyr包使用transmute函数生成新的数据列
- R语言dplyr包使用mutate函数生成新的数据列(不改变原数据列)实战
R语言dplyr包使用mutate函数生成新的数据列(不改变原数据列)实战 目录 R语言dplyr包使用mutate函数生成新的数据列(不改变原数据列)实战
- R语言dplyr包sample_n函数、sample_frac函数数据采样实战
R语言dplyr包sample_n函数.sample_frac函数数据采样实战 目录 R语言dplyr包sample_n函数.sample_frac函数数据采样实战 #导入dplyr包
- R语言tidyr包pivot_longer函数、pivot_wider函数数据表变换实战(长表到宽表、宽表到长表)
R语言tidyr包pivot_longer函数.pivot_wider函数数据表变换实战(长表到宽表.宽表到长表) 目录
- R语言dplyr包na_if函数根据条件将数据对象替换为NA值实战
R语言dplyr包na_if函数根据条件将数据对象替换为NA值实战 目录 R语言dplyr包na_if函数根据条件将数据对象替换为NA值实战 #导入dplyr包
- R语言survival包的survfit函数拟合生存曲线数据、survminer包的ggsurvplot函数可视化生存曲线、size参数指定曲线粗细、palette参数自定义生存曲线的颜色
R语言survival包的survfit函数拟合生存曲线数据.survminer包的ggsurvplot函数可视化生存曲线.size参数指定曲线粗细.palette参数自定义生存曲线的颜色 目录
- R语言survival包的survfit函数拟合生存曲线数据、survminer包的ggsurvplot函数可视化生存曲线、绘制分面生存曲线(facet_grid)
R语言survival包的survfit函数拟合生存曲线数据.survminer包的ggsurvplot函数可视化生存曲线.绘制分面生存曲线(facet_grid) 目录
- R语言survival包的survfit函数拟合生存曲线数据、survminer包的ggsurvevents函数可视化生存时间分布图、设置normalized参数归一化比例结果
R语言survival包的survfit函数拟合生存曲线数据.survminer包的ggsurvevents函数可视化生存时间分布图.设置normalized参数归一化比例结果 目录
最新文章
- linux网络工程师证书,网络工程师应该考什么证
- PDF 补丁丁 0.5.0.2078 测试版发布:不用打字,也能加书签
- 【Python学习系列十三】Python机器学习库scikit-learn实现逻辑回归
- Spring(5)——Spring 和数据库编程
- mysql中if在oracle怎么用_mysql和oracle的mybatis操作
- left join 多条件_第九篇|Spark的五种JOIN策略解析
- mybatis中使用SqlSessionManager进行insert操作
- 132.Function Handing 函数
- Bootstrap 按钮的使用
- 用python完成《商务与经济统计(13版)》课后练习及案例分析——第2章和第3章
- php扩展 ioncube组件的安装方法_安装IonCube Loader扩展方法
- 亚马逊运营教程,三招学会亚马逊
- html5怎么设置表格背景颜色,Echart 如何设置表格内的背景颜色?
- 全国市场调查大赛经验分享(二)
- 阿里云国际站代充值个人注册与分销商邀约区别
- 10句Twitter上流行的微博语录
- python不支持下标访问,Python支持使用字典的“键”作为下标来访问字典中的值。...
- PMP学习笔记 第3章 项目经理的角色
- web攻防之跨站脚本攻击漏洞
- 快学excel-VBA创建数据透视表