我该如何计算:
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
,您可以使用tapply
和do.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))