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

如何简化dplyr中summarise的重复分位数计算并优化结果格式?

简化分组计算分位数并重塑数据的代码

先看示例数据:

example_data <- 
  data.frame(Group = rep(c("A", "B"), each = 5),
             Values = rnorm(10))

原代码重复调用quantile计算多个分位数,再转长格式,冗余且繁琐。下面是简化后的代码,同时满足用0.1/0.2等数值作为百分位数标识的需求:

library(dplyr)
library(tidyr)

# 简化版代码
example_data %>%
  group_by(Group) %>%
  reframe(
    Percentiles = seq(0.1, 0.9, by = 0.1),
    `Percentile Values` = quantile(Values, probs = Percentiles)
  )

简化思路:

  • 用seq(0.1, 0.9, by = 0.1)一次性生成所有需要的分位数概率,避免重复写9次quantile调用
  • 直接把概率值作为Percentiles列的内容,不需要先生成p01这类命名再转格式,一步到位满足标识需求
  • 使用reframe(dplyr 1.0.0及以上版本支持)直接生成分组后的多行结果,省去原代码里pivot_longer的步骤,逻辑更连贯

如果你的dplyr版本较低,也可以用summarise配合unnest实现:

example_data %>%
  group_by(Group) %>%
  summarise(
    Percentiles = list(seq(0.1, 0.9, by = 0.1)),
    `Percentile Values` = list(quantile(Values, probs = Percentiles[[1]]))
  ) %>%
  unnest(cols = c(Percentiles, `Percentile Values`))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 23:15:33