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

R语言ggplot密度图按分位数分4组并为数据表新增group列的方法

你已经提前计算好了q5(Qeff的5%分位数)、median(Qeff的中位数)、q95(Qeff的95%分位数)三个阈值,直接用下面两种data.table原生操作方式即可实现需求:

方法1:使用fcase(推荐,data.table原生,大表性能更高)

fcase是data.table提供的多条件分支函数,逻辑清晰可控,完全匹配你的分组规则:

library(data.table)
# 新增group列
dt.all2018[, group := fcase(
  Qeff <= q5, 1L,
  Qeff > q5 & Qeff <= median, 2L,
  Qeff > median & Qeff <= q95, 3L,
  Qeff > q95, 4L
)]

代码里的1L/2L表示生成整数类型的分组值,符合你要求的group列仅含1-4数字的要求。如果数据存在NA值,可以在fcase最后加default = NA_integer_参数处理缺失值。

方法2:使用cut函数(写法更简洁)

用cut直接按阈值划分区间后转成整数即可:

dt.all2018[, group := as.integer(cut(
  Qeff,
  breaks = c(-Inf, q5, median, q95, Inf),
  include.lowest = TRUE
))]

参数include.lowest = TRUE保证小于等于5%分位数的取值会被归入第一组,生成的整数结果刚好对应1-4的分组编号。

结果验证

可以执行下面的代码查看各分组的样本量,确认分组逻辑正确:

dt.all2018[, .N, by = group][order(group)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 01:30:00