R语言-plyr包中的函数
plyr包集中体现了“分离-操作-结合”的数据操作理念。
plyr的核心函数由ddply、llply、laply函数组成,所有的函数名均由五个字母组成且最后三个字母都为ply。函数名的第一个字母代表输入值的类型,第二个字母代表输出值的类型。(plyr是根据单词钳子(plier)仿造出的词,因为钳子是用途广泛且必不可少的常用工具之一)
函数名 | 输入值类型 | 输出值类型 |
---|---|---|
ddply |
数据框 |
数据框 |
llply | 列表 | 列表 |
aaply | 数组/相量/矩阵 | 数组/相量/矩阵 |
dlply | 数据框 | 列表 |
daply | 数据框 | 数组/相量/矩阵 |
d_ply | 数据框 | 无 |
ldply | 列表 | 数据框 |
laply | 列表 | 数组/相量/矩阵 |
l_ply | 列表 | 无 |
adply | 数组/相量/矩阵 | 数据框 |
alply | 数组/相量/矩阵 | 列表 |
a_ply | 数组/相量/矩阵 | 无 |
1.ddply
函数ddply()以数据框为输入值,根据几个变量对其分类并做相应的运算,最后返回一个数据框。
以plyr包中的baseball数据为例:
library(plyr)
head(baseball)
在棒球比赛中一个常用的统计数据为上垒率(OBP),其计算公式为:
其中H为安打,BB为四坏保送,HBP为触身球,AB为打数,SF为高飞牺牲打。
在1954年之前,高飞牺牲打被算为牺牲打的一部分,且其还包括短打,所以1954年之前球员的高飞牺牲打数据假定为0.这是需要对原数据做的第一个改变。还有原始数据中HBP有许多缺失值,我们应该设其为0。此外,我们还剔除了一个赛季少于50打数的球员数据。
首先将1954年之前的sf数据设为0,并检测sf数据有没有缺失值
baseball$sf[baseball$year<1954]<-0
any(is.na(baseball$sf))
[1] FALSE
结果显示没有缺失的sf值
再将HBP中的缺失值设为0,并检测
baseball$hbp[is.na(baseball$hbp)]<-0
any(is.na(baseball$hbp))
[1] FALSE
然后剔除一个赛季少于50打数的球员数据
baseball<-baseball[baseball$ab>=50,]
添加一个新变量OBP,按OBP公式操作
baseball$OBP<-with(baseball,(h+bb+hbp)/(ab+bb+hbp+sf))
tail(baseball)
为了计算每个球员在其整个职业生涯的OBP指标,就不能仅仅平均其在单个赛季的OBP,这需要对分子和分母上的变量同时求和并用分子除以分母。这样的操作可以用ddply函数完成。
首先定义一个做以上运算的函数,并通过ddply调用使其运用到每一个球员的数据上。
obp<-function(data)
+ {
+ c(OBP=with(data,sum(h+bb+hbp)/sum(ab+bb+hbp+sf)))
+ }
careerOBP<-ddply(baseball,.variables='id',.fun=obp)
careerOBP<-careerOBP[order(careerOBP$OBP,decreasing=TRUE),]
head(careerOBP,10)
结果返回了职业生涯中上垒率前十的球员数据。
R语言-plyr包中的函数相关推荐
- R语言plyr包round_any函数将向量数据近似到任意精度实战
R语言plyr包round_any函数向量将数据近似到任意精度实战 目录 R语言plyr包round_any函数向量将数据近似到任意精度实战 #导入plyr包 #仿真数据
- R语言dplyr包的mutate函数将列添加到dataframe中或者修改现有的数据列:基于条件判断创建布尔型指示变量、将异常离散编码转化为NA值
R语言dplyr包的mutate函数将列添加到dataframe中或者修改现有的数据列:基于条件判断创建布尔型指示变量.将异常离散编码转化为NA值 目录
- R语言dplyr包的mutate函数将列添加到dataframe中或者修改现有的数据列:使用na_if()函数将0值替换为NA值、负收入替换为NA值
R语言dplyr包的mutate函数将列添加到dataframe中或者修改现有的数据列:使用na_if()函数将0值替换为NA值.负收入替换为NA值 目录
- R语言dplyr包使用anti_join()函数返回在一个dataframe中存在而在另一个dataframe中没有匹配值的所有行实战
R语言dplyr包使用anti_join()函数返回在一个dataframe中存在而在另一个dataframe中没有匹配值的所有行实战 目录
- R语言dplyr包使用recode函数进行数据列内容编码、转换实战:类似于pandas中的map函数(例如,将内容从字符串映射到数值)
R语言dplyr包使用recode函数进行数据列内容编码.转换实战:类似于pandas中的map函数(例如,将内容从字符串映射到数值) 目录
- R语言dplyr包的select函数和everthing函数筛选dataframe中的所有数据列(all columns of the dataframe)
R语言dplyr包的select函数和everthing函数筛选dataframe中的所有数据列(all columns of the dataframe) 目录 R语言dplyr包的select函数 ...
- R语言survminer包的pairwise_survdiff函数多重比较分组中多个生成曲线的差异并输出p值、使用symnum函数将p值转化为等级表示星号
R语言survival包的survfit函数拟合生存曲线数据.survminer包的pairwise_survdiff函数多重比较分组中多个生成曲线的差异并输出p值.使用symnum函数将p值转化为等 ...
- R语言mgcv包中的gam函数拟合广义加性模型(Generalized Additive Model)GAM(对非线性变量进行样条处理、计算RMSE、R方、调整R方、可视化模型预测值与真实值的曲线)
R语言mgcv包中的gam函数拟合广义加性模型(Generalized Additive Model)GAM(对非线性变量进行样条处理.计算RMSE.R方.调整R方.可视化模型预测值与真实值的曲线) ...
- R语言survival包的survfit函数拟合生存曲线数据、survminer包的ggsurvplot函数可视化生存曲线、使用pval参数自定义指定生存曲线中可视化的p值、为p值添加文本说明内容
R语言survival包的survfit函数拟合生存曲线数据.survminer包的ggsurvplot函数可视化生存曲线.使用pval参数自定义指定生存曲线中可视化的p值.为p值添加文本说明内容 目 ...
最新文章
- 4.MySQL连接并选择数据库(SQL C)
- 一些常见的名词解释(持续更新中)
- 低潮过后,未来医疗可穿戴市场将如何发展?
- 数据库中的实体、元组、字段、属性、码、分量、依赖关系、完全部份传递依赖、范式等你了解吗?【笔记自用】
- 搭建一个jupyter站点做数据分析吧
- 第二弹:超全Python学习资源整理(进阶系列)
- 绝不能放进微波炉的10样东西,最后一个太意外
- 关于 NODE.js 并行线程 worker_threads 的使用与详解。
- linux android ndk
- 纵览神经架构搜索方法
- [论文阅读] Multiple Instance Active Learning for Object Detection
- csgo服务器怎么显示cmd,CSGO服务器搭建教程——KZ模式
- 美化你的Xfce桌面
- poco mysql 安装_linux 下 POCO 安装
- Win 10出现bitlocke恢复,蓝屏错误代码0x1600007e
- 双绞线与PCB差分信号布线
- html5考试总结300字,考试总结300字
- 服务器io测试工具-fio
- 关于Tomcat服务器无法打开tomcat7w.exe的解决办法
- wcat 进行iis 压力测试
热门文章
- 解决ajax中ie缓存问题(手动添加时间戳)
- python3-Django3-网站模板
- ajax上传.mp4文件不出错,ajax视频如何上传?
- idea 查询项目代码行数_程序员的福利,四个技巧,让OneNote支持代码高亮
- Master of GCD 线段树区间更新
- 冒泡排序(【CCF】NOI Online能力测试 提高组第二题)
- Python Cookbook by Eric
- conda 命令 直接安装 OpenCV[Anaconda]
- C语言中 . 和 - 区别详解(举例解释)
- 【转】VO BO PO 介绍