r - R dplyr中的量化列
问题描述
我有一个像这样生成的数据框..
df = data.frame(
Age = sample(18:98, 1000, replace = TRUE)
)
我想创建一个新列,该列根据分位数(25%、50%、75%)对 Age 列进行存储。可以这样做:
> quantile(df$Age, probs = c(0.25,0.5,0.75))
25% 50% 75%
39 58 78
示例输出看起来像这样
Age Age_Bucket
19 25%
26 25%
87 75%
54 25%
20 25%
66 50%
我该如何在 dplyr 中做到这一点?
解决方案
您可以使用case_when
q <- quantile(df$Age, probs = c(0.25,0.5,0.75))
df %>%
mutate(Age_Bucket = case_when(
Age < q[1] ~ "25%",
between(Age, q[1], q[3]) ~ "50%",
Age > q[3] ~ "75%"
))