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

R语言:按年度将数据框分十分位并计算均值与中位数问题

解决方法

你的问题出在没有按年度分组计算十分位,原来的ntile(value,10)是对整个数据集的value分十分位,而非每年单独划分。以下是两种正确的实现方式:

1. 使用dplyr实现

library(dplyr)

# 先按年度分组,在每组内计算十分位,再按年度+十分位聚合统计
result_dplyr <- df %>%
  group_by(Year) %>%
  mutate(quantile = ntile(value, 10)) %>%
  ungroup() %>%
  group_by(Year, quantile) %>%
  summarise(
    mean_value = mean(value),
    median_value = median(value),
    .groups = "drop"
  )

print(result_dplyr)

2. 使用data.table实现

library(data.table)

setDT(df)

# 转换为data.table后,先按Year分组生成十分位,再分组计算统计量
result_dt <- df[, .(Category, value, quantile = ntile(value, 10)), by = Year][
  , .(mean_value = mean(value), median_value = median(value)), by = .(Year, quantile)
]

print(result_dt)

两种方法都会生成目标数据框:每行对应年度+十分位的组合,包含该组的value均值和中位数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.03 19:55:15