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

R语言cut函数分位数分组求助:按40%、85%分位数划分低中高组

问题分析与修正方案

你的代码核心问题有两个:

  • 分位数选取错误:用seq(0,1,by=.40)得到的是0%、40%、80%、100%分位数,和需求的40%、85%分位数不匹配
  • 区间规则不符合要求:right=TRUE会让低组包含40%分位数,且未覆盖极值范围(比如低于最小值、高于最大值的数值)

修正后的代码

# 计算目标分位数
q40 <- quantile(df_XX$sales, probs = 0.4, na.rm = TRUE)
q85 <- quantile(df_XX$sales, probs = 0.85, na.rm = TRUE)

# 按规则分组
sales_cat <- cut(
  df_XX$sales,
  breaks = c(-Inf, q40, q85, Inf),
  labels = c("低", "中", "高"),
  right = FALSE,  # 左闭右开,确保低组不含40%分位数
  ordered = TRUE,
  na.rm = TRUE
)

代码逻辑说明

  • breaks = c(-Inf, q40, q85, Inf):用-Inf和Inf覆盖所有销售额数值,避免出现未被分组的极值
  • right = FALSE设置区间为左闭右开,完全匹配你的分组规则:
    • 低组:(-Inf, q40) → 40%分位数以下(不含该分位数)
    • 中组:[q40, q85) → 介于低组和高组之间的数值
    • 高组:[q85, Inf) → 85%分位数及以上
  • 若你需要高组不含85%分位数,只需将right改为TRUE,此时高组区间为(q85, Inf)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 14:55:22