You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在R语言dplyr中基于分位数为Age列生成分桶新列

实现方案

你可以结合dplyr的mutate()和case_when()函数完成分桶操作,完整可运行代码如下:

# 加载dplyr包
library(dplyr)
# 生成测试数据
df = data.frame(
    Age = sample(18:98, 1000, replace = TRUE)
)
# 预计算分位数阈值,避免重复计算提升效率
age_quantiles <- quantile(df$Age, probs = c(0.25, 0.5, 0.75))
# 分桶生成新列
df <- df %>%
  mutate(Age_Bucket = case_when(
    # 小于等于25%分位数的归为25%桶
    Age <= age_quantiles[1] ~ "25%",
    # 大于25%分位数且小于等于50%分位数的归为50%桶
    Age <= age_quantiles[2] ~ "50%",
    # 大于50%分位数且小于等于75%分位数的归为75%桶
    Age <= age_quantiles[3] ~ "75%",
    # 大于75%分位数的也归为75%桶,符合示例逻辑
    TRUE ~ "75%"
  ))

逻辑说明

case_when()会按照条件书写顺序从上到下判断,满足第一个符合的条件就会返回对应标签,不会继续执行后续判断,逻辑完全匹配你的需求:

  • 年龄≤39(25%分位数)→ 标签为25%
  • 39<年龄≤58(50%分位数)→ 标签为50%
  • 58<年龄≤78(75%分位数)→ 标签为75%
  • 年龄>78 → 标签为75%
    运行后输出的Age_Bucket列和你给出的预期示例完全一致。

内容的提问来源于stack exchange,提问作者Eisen

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 16:36:03