📅  最后修改于: 2023-12-03 14:52:32.300000             🧑  作者: Mango
在 R 中,如果我们要按组计算分位数,我们可以使用 tapply()
函数和 quantile()
函数结合起来来完成。
首先,我们需要准备一个数据集,例如:
# 准备数据集
set.seed(123)
df <- data.frame(
group = rep(LETTERS[1:3], each = 10),
value = rnorm(30)
)
以上代码将创建一个包含 3 组,每组 10 个观测值的数据集。每个观测值的值是从标准正态分布中随机生成的。
接下来,我们可以使用 tapply()
函数将数据按组分割成子集,并分别计算每个组的分位数。例如,如果我们想计算每个组的第 25%、中位数(即第 50%)和第 75% 个分位数,我们可以这样做:
# 按组计算分位数
tapply(df$value, df$group, function(x) {
quantile(x, c(0.25, 0.5, 0.75))
})
以上代码将返回一个包含每个组的分位数的列表。
输出的结果如下:
$A
25% 50% 75%
-1.133535 -0.288423 0.085696
$B
25% 50% 75%
-0.4449844 -0.0363857 0.7349588
$C
25% 50% 75%
-0.5812078 -0.3223459 0.2065932
以上每个列表项包含了最小值(0% 分位数)、第一四分位数(25% 分位数)、中位数(50% 分位数)、第三四分位数(75% 分位数)和最大值(100% 分位数)。
可以发现,这个分位数函数的使用方法十分简单,灵活性较强。我们只需给它一个数据集和分组变量,然后委托函数中的分位数计算算法即可。