r - 按组对多个分位数进行 ddply

标签 r plyr

我怎样才能做这个计算:

library(ddply)
quantile(baseball$ab)
  0%  25%  50%  75% 100% 
  0   25  131  435  705 

按组,按“团队”说?我想要一个行名“团队”和列名“0% 25% 50% 75% 100%”的数据框,即一个 quantile每组调用。

正在做
ddply(baseball,"team",quantile(ab))

不是正确的解决方案。我的问题是每个分组操作的 OUTPUT 在这里是一个长度为 5 的向量。

换句话说,对此有什么巧妙的解决方案(别管标题):
m=data.frame()
for (i in unique(baseball$team)){m=rbind(m,quantile(baseball[baseball$team==i, ]$ab))}
head(m,3)
  X120 X120.1 X120.2 X120.3 X120.4
1  120  120.0  120.0 120.00    120
2  162  162.0  162.0 162.00    162
3   89   89.0   89.0  89.00     89

最佳答案

带底座R你可以用 tapplydo.call

library(plyr)
do.call("rbind", tapply(baseball$ab, baseball$team, quantile))

do.call("rbind", tapply(baseball$ab, baseball$team, quantile, c(0.05, 0.1, 0.2)))

或者,使用 ddply
ddply(baseball, .(team), function(x) quantile(x$ab))

关于r - 按组对多个分位数进行 ddply,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22403450/

相关文章:

r - 在 R 上运行 CellNet 时未加载 dyld

r - 数据帧错误: arguments imply differing number of rows

通过变量将数据从长格式改造成短格式,并重命名列

r - 按 (x,y) 对数据进行分类并汇总

r - data.table 的 j 表达式中的列(带/不带 by 语句)

css - 在 Shiny 的仪表板中对齐标题元素

R:如何在包中使用get和set函数?

r - 如何在 R 中生成 GUID?

r - 如何将data.frame放入R中的多维数组中?

r - ddply 在 R : for each group, 中找到特定变量的出现百分比