plyr包集中体现了“分离-操作-结合”的数据操作理念。

plyr的核心函数由ddply、llply、laply函数组成,所有的函数名均由五个字母组成且最后三个字母都为ply。函数名的第一个字母代表输入值的类型,第二个字母代表输出值的类型。(plyr是根据单词钳子(plier)仿造出的词,因为钳子是用途广泛且必不可少的常用工具之一)

plyr包中的函数及其输入值和输出值
函数名 输入值类型 输出值类型
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包中的函数相关推荐

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

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

  2. R语言dplyr包的mutate函数将列添加到dataframe中或者修改现有的数据列:基于条件判断创建布尔型指示变量、将异常离散编码转化为NA值

    R语言dplyr包的mutate函数将列添加到dataframe中或者修改现有的数据列:基于条件判断创建布尔型指示变量.将异常离散编码转化为NA值 目录

  3. R语言dplyr包的mutate函数将列添加到dataframe中或者修改现有的数据列:使用na_if()函数将0值替换为NA值、负收入替换为NA值

    R语言dplyr包的mutate函数将列添加到dataframe中或者修改现有的数据列:使用na_if()函数将0值替换为NA值.负收入替换为NA值 目录

  4. R语言dplyr包使用anti_join()函数返回在一个dataframe中存在而在另一个dataframe中没有匹配值的所有行实战

    R语言dplyr包使用anti_join()函数返回在一个dataframe中存在而在另一个dataframe中没有匹配值的所有行实战 目录

  5. R语言dplyr包使用recode函数进行数据列内容编码、转换实战:类似于pandas中的map函数(例如,将内容从字符串映射到数值)

    R语言dplyr包使用recode函数进行数据列内容编码.转换实战:类似于pandas中的map函数(例如,将内容从字符串映射到数值) 目录

  6. R语言dplyr包的select函数和everthing函数筛选dataframe中的所有数据列(all columns of the dataframe)

    R语言dplyr包的select函数和everthing函数筛选dataframe中的所有数据列(all columns of the dataframe) 目录 R语言dplyr包的select函数 ...

  7. R语言survminer包的pairwise_survdiff函数多重比较分组中多个生成曲线的差异并输出p值、使用symnum函数将p值转化为等级表示星号

    R语言survival包的survfit函数拟合生存曲线数据.survminer包的pairwise_survdiff函数多重比较分组中多个生成曲线的差异并输出p值.使用symnum函数将p值转化为等 ...

  8. R语言mgcv包中的gam函数拟合广义加性模型(Generalized Additive Model)GAM(对非线性变量进行样条处理、计算RMSE、R方、调整R方、可视化模型预测值与真实值的曲线)

    R语言mgcv包中的gam函数拟合广义加性模型(Generalized Additive Model)GAM(对非线性变量进行样条处理.计算RMSE.R方.调整R方.可视化模型预测值与真实值的曲线) ...

  9. R语言survival包的survfit函数拟合生存曲线数据、survminer包的ggsurvplot函数可视化生存曲线、使用pval参数自定义指定生存曲线中可视化的p值、为p值添加文本说明内容

    R语言survival包的survfit函数拟合生存曲线数据.survminer包的ggsurvplot函数可视化生存曲线.使用pval参数自定义指定生存曲线中可视化的p值.为p值添加文本说明内容 目 ...

最新文章

  1. 4.MySQL连接并选择数据库(SQL C)
  2. 一些常见的名词解释(持续更新中)
  3. 低潮过后,未来医疗可穿戴市场将如何发展?
  4. 数据库中的实体、元组、字段、属性、码、分量、依赖关系、完全部份传递依赖、范式等你了解吗?【笔记自用】
  5. 搭建一个jupyter站点做数据分析吧
  6. 第二弹:超全Python学习资源整理(进阶系列)
  7. 绝不能放进微波炉的10样东西,最后一个太意外
  8. 关于 NODE.js 并行线程 worker_threads 的使用与详解。
  9. linux android ndk
  10. 纵览神经架构搜索方法
  11. [论文阅读] Multiple Instance Active Learning for Object Detection
  12. csgo服务器怎么显示cmd,CSGO服务器搭建教程——KZ模式
  13. 美化你的Xfce桌面
  14. poco mysql 安装_linux 下 POCO 安装
  15. Win 10出现bitlocke恢复,蓝屏错误代码0x1600007e
  16. 双绞线与PCB差分信号布线
  17. html5考试总结300字,考试总结300字
  18. 服务器io测试工具-fio
  19. 关于Tomcat服务器无法打开tomcat7w.exe的解决办法
  20. wcat 进行iis 压力测试

热门文章

  1. 解决ajax中ie缓存问题(手动添加时间戳)
  2. python3-Django3-网站模板
  3. ajax上传.mp4文件不出错,ajax视频如何上传?
  4. idea 查询项目代码行数_程序员的福利,四个技巧,让OneNote支持代码高亮
  5. Master of GCD 线段树区间更新
  6. 冒泡排序(【CCF】NOI Online能力测试 提高组第二题)
  7. Python Cookbook by Eric
  8. conda 命令 直接安装 OpenCV[Anaconda]
  9. C语言中 . 和 - 区别详解(举例解释)
  10. 【转】VO BO PO 介绍