我该如何计算:

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


按团体说,按“团队”说?我想要一个data.frame,其行名为“ team”,列名为“ 0%25%50%75%100%”,即每组一个quantile调用。

在做

ddply(baseball,"team",quantile(ab))


不是正确的解决方案。我的问题是每个分组操作的输出在这里都是长度为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))

09-05 03:07