📜  如何在 R 中按组计算分位数?(1)

📅  最后修改于: 2023-12-03 14:52:32.300000             🧑  作者: Mango

如何在 R 中按组计算分位数?

在 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% 分位数)。

可以发现,这个分位数函数的使用方法十分简单,灵活性较强。我们只需给它一个数据集和分组变量,然后委托函数中的分位数计算算法即可。