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

R语言中如何将单年份数据集按十年年代分组统计观测总数

R语言按十年年代分组统计实现方法

处理tibble格式的年度数据做十年维度聚合,用dplyr分组聚合是最简便的方案,逻辑和代码如下:

  • 核心分组逻辑:对存储单年份的decade字段做整除10后乘10的运算,即可得到每个年份对应十年区间的起始值(比如1931、1939做该运算都得到1930),起始值加9即为区间结束值,拼接后就能得到1930-1939这类年代标签
  • 按生成的年代标签分组后,对每组的n字段求和即可得到结果
  • 注:你给出的期望输出样例中decade字段标注为<dbl>数值型属于笔误,1930-1939这类区间值实际为字符型。

dplyr实现(推荐,适配tibble数据结构)

library(dplyr)

# 替换yearly_data为你的原始数据集名称即可
decade_sum <- yearly_data %>%
  group_by(decade = paste0(decade %/% 10 * 10, "-", decade %/% 10 * 10 + 9)) %>%
  summarise(n = sum(n), .groups = "drop")

运行后输出的tibble结构和你预期完全一致,每行对应一个十年区间的观测总数。

基础R实现(无需加载第三方包)

如果不想依赖tidyverse生态,用基础R的聚合函数也能实现相同效果:

# 生成年代分组标签
decade_start <- yearly_data$decade %/% 10 * 10
decade_label <- paste0(decade_start, "-", decade_start + 9)
# 分组求和
decade_sum <- aggregate(n ~ decade_label, data = yearly_data, FUN = sum)
# 重命名字段匹配预期格式
names(decade_sum) <- c("decade", "n")

两种实现的分组逻辑完全一致,都会自动识别1930-1939、1940-1949直到数据覆盖的最后一个十年区间,不需要手动指定分组边界。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 16:18:19