首页 > 解决方案 > 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 中做到这一点?

标签: rdplyr

解决方案


您可以使用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%"
  ))

推荐阅读