我正在开展一个学校项目,并且有一个包含 4,000 行的数据集。有 40 名参与者,每人大约有 100 行。我想创建一个数据集,将每个参与者的行折叠成汇总统计数据,最好是第 90 个百分位。我知道如何使用 dplyr 查找平均值:
Means <- bladder %>%
group_by(id, group) %>%
summarise(across(everything(), list(mean)))
这效果很好。但我是否可以做同样的事情,但列出第 90 个百分位数而不是均值?
谢谢!!
最佳答案
R 中计算百分位数的函数是quantile
。我们可以指定 probs = 0.9
来获得第 90 个百分位。
这里我使用 survival
包中的 bladder
数据集进行演示。
library(dplyr)
survival::bladder %>%
group_by(id, rx) %>%
summarize(across(everything(), quantile, probs = 0.9, .groups = "drop"))
# A tibble: 85 × 7
id rx number size stop event enum
<int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
1 1 1 1 3 1 0 3.7
2 2 1 2 1 4 0 3.7
3 3 1 1 1 7 0 3.7
4 4 1 5 1 10 0 3.7
5 5 1 4 1 10 0.7 3.7
6 6 1 1 1 14 0 3.7
7 7 1 1 1 18 0 3.7
8 8 1 1 3 18 0.7 3.7
9 9 1 1 1 18 1 3.7
10 10 1 3 3 23 0 3.7
# … with 75 more rows
关于r - 为 R 中所有列的多行创建摘要(第 90 个百分位)统计数据的新数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72157696/