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

在R中按分组计算CountC四分位数并将宽表转为指定长表格式

解决方案

你原有代码存在两个问题:

  1. 分组汇总时调用df$CountC会读取全表的CountC列,忽略分组逻辑,导致计算的是全局分位数而非分组内分位数,结果不符合预期
  2. 要生成长表不需要先计算为宽表再转换,直接使用dplyr的reframe函数(支持分组后返回多行结果)即可一步得到目标格式。

最优代码(dplyr 1.0.0及以上版本适用)

library(dplyr)

q <- c(0.25, 0.5, 0.75)

quartileDFbyGroup <- df %>%
  group_by(Group) %>%
  reframe(
    Proba = q,
    Value = quantile(CountC, probs = q)
  )

运行上述代码直接得到你需要的长表格式结果,若分位数计算结果和你预期的示例有差异,可以通过调整quantile函数的type参数适配不同的分位数计算规则。

旧版本dplyr兼容方案

如果你使用的dplyr版本不支持reframe,可以先计算宽表再用tidyr转长:

library(dplyr)
library(tidyr)

q <- c(0.25, 0.5, 0.75)

quartileDFbyGroup <- df %>%
  group_by(Group) %>%
  summarize(
    quant25 = quantile(CountC, probs = q[1]),
    quant50 = quantile(CountC, probs = q[2]),
    quant75 = quantile(CountC, probs = q[3])
  ) %>%
  pivot_longer(cols = starts_with("quant"), names_to = NULL, values_to = "Value") %>%
  mutate(Proba = rep(q, n()/length(q))) %>%
  select(Proba, Value, Group)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 05:24:03