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

在R中按季度汇总月度数据并填充对应季度值的问题求助

解决按4月季度汇总乘客数并填充到每月的问题

问题分析

你需要将每4个月作为一个“季度”(从1月起始),计算每个季度的乘客总数,并将该值填充到季度内的每个月份行中。原代码的问题在于使用了错误的summarise_all语法,且summarise会压缩分组结果,无法保留原有的每月行。

正确实现步骤

首先加载所需包:

library(tsibble)
library(lubridate)
library(dplyr)

1. 准备示例数据

flights_ts <- tsibble(Month = yearmonth(make_date(2003, 1) + months(0:11)), Passengers = c(1,5,7,9,3,5,6,7,7,2,5,9), index = Month)

2. 创建自定义4月分组

如果数据仅涉及单一年份,可直接基于月份分组:

flights_ts <- flights_ts %>%
  mutate(quarter_group = floor((month(Month) - 1)/4) + 1)

如果数据跨年度,需结合年份避免分组重复:

flights_ts <- flights_ts %>%
  mutate(
    year = year(Month),
    quarter_group = paste(year, floor((month(Month)-1)/4)+1, sep = "-")
  )

3. 计算季度总和并填充到每月

使用group_by+mutate保留原有行,同时添加季度总和列:

result_ts <- flights_ts %>%
  group_by(quarter_group) %>%
  mutate(qtr_passengers = sum(Passengers)) %>%
  ungroup()

验证结果

运行后示例数据的输出符合预期:

  • 2003年1-4月的qtr_passengers均为22(1+5+7+9)
  • 5-8月均为21(3+5+6+7)
  • 9-12月均为23(7+2+5+9)

原代码错误原因

  • summarise_all(qtr_passengers = sum(Passengers))语法错误:summarise_all接收的是函数而非赋值语句,它会对所有列应用函数,导致结果不符合预期。
  • 使用summarise会将每个分组压缩为一行,无法保留原有的每月数据行,而mutate会在原数据基础上添加新列,保留所有行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 07:03:11