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

如何用dplyr计算多分类下上下10%分位对应数值的均值

实现方案

1. dplyr 实现

通过group_by()按分类分组后直接汇总计算即可,逻辑直观易读:

library(dplyr)

df %>%
  group_by(cat) %>%
  summarise(
    # 前10%(≥90分位)均值
    top10_mean = mean(x[x >= quantile(x, 0.9)]),
    # 后10%(≤10分位)均值
    bottom10_mean = mean(x[x <= quantile(x, 0.1)])
  )

运行输出结果:

# A tibble: 2 × 3
  cat   top10_mean bottom10_mean
  <chr>      <dbl>         <dbl>
1 a          0.954        0.0796
2 b          1.96         1.09 

和你提供的base R计算结果完全一致。

2. purrr 实现

先按分类拆分数据集为列表,遍历每个子数据集计算后合并结果:

library(purrr)
library(tibble)

df %>%
  split(.$cat) %>%
  map_dfr(~ tibble(
    cat = unique(.x$cat),
    top10_mean = mean(.x$x[.x$x >= quantile(.x$x, 0.9)]),
    bottom10_mean = mean(.x$x[.x$x <= quantile(.x$x, 0.1)])
  ))

输出结果和dplyr实现完全相同。


内容的提问来源于stack exchange,提问作者Maikol Solís

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 14:00:05