【发布时间】:2016-02-17 10:24:13
【问题描述】:
我有以下df:
group = rep(seq(1,3),30)
variable = runif(90, 5.0, 7.5)
df = data.frame(group,variable)
我需要 i) 按组定义分位数,ii) 将每个人分配给她相对于组的分位数。
因此,输出如下所示:
id group variable quantile_with_respect_to_the_group
1 1 6.430002 1
2 2 6.198008 3
.......
有一种复杂的方法可以在每个组上使用循环和剪切函数,但它根本没有效率。有人知道更好的解决方案吗?
谢谢!
【问题讨论】:
-
您可以使用
tapply(df$variable, df$group, FUN = function(x) quantile(x, prob = 0.5), simplify = TRUE)或aggregate之类的其他内容,甚至可以使用包dplyr -
它适用于计算分位数,但不会将每个人分配给 df 中自己的分位数。