我该怎么做这个计算:
library(ddply)
quantile(baseball$ab)
0% 25% 50% 75% 100%
0 25 131 435 705
按群组说,"team"?我想要一个带有rownames "team"和列名"0% 25% 50% 75% 100%"的data.frame,即每组一个 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
4 回答
您可以使用
dplyr
中的非标准分位数执行此操作:注意这是
dplyr::summarise
,而不是plyr::summarise
使用
R
,您可以使用tapply
和do.call
或者,
ddply
您应该分别定义每个分位数的计算并使用
summarise
. 也可以使用.(team)
.使用
dplyr
略有不同的方法:在这里,您可以在
probs
参数中指定所需的分位数 .invoke_map
调用似乎是必要的,因为quantile
不返回数据帧;见this answer .您还可以将所有内容放入函数中: