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

在R中按双周(Fortnight)分组时间序列数据的问题求助

按年度划分双周分组计算均值的解决方案

问题描述

拥有10年时间序列数据,需计算周度、月度及双周(Fortnight)均值,周度和月度计算已完成,但双周分组时遇到报错。使用lubridate::floor_date(date, unit = "2 weeks")时,系统提示Rounding with week > 1 is not supported。

解决方案

以下是几种按年度划分双周分组的可行方法:

方法1:基于年度内天数计算双周组

通过将日期转换为年度内的天数,再按每14天为一组划分,确保双周组严格在年度内,不会跨年度:

library(lubridate)
library(dplyr)

# 生成示例时间序列数据
dates <- seq(as.Date("2015-06-06"), as.Date("2022-12-18"), by = "day")
values <- rnorm(length(dates), mean = 100, sd = 10)
data <- data.frame(date = dates, value = values)

# 按年度划分双周并计算均值
grouped_data <- data %>%
  mutate(
    year = year(date),
    day_of_year = yday(date),
    # 每14天为一组,生成年度内的双周组编号
    fortnight_group = ceiling(day_of_year / 14)
  ) %>%
  group_by(year, fortnight_group) %>%
  summarise(
    mean_value = mean(value),
    # 可选:添加每组的起始/结束日期,便于查看分组范围
    start_date = min(date),
    end_date = max(date)
  ) %>%
  ungroup()

print(grouped_data)

方法2:结合年度周数实现双周分组

利用lubridate的epiweek函数获取日期对应的年度周数,再通过整数除法将每两周合并为一组:

grouped_data <- data %>%
  mutate(
    year = year(date),
    # 将年度周数除以2并向下取整,得到双周组编号
    fortnight_group = floor(epiweek(date) / 2)
  ) %>%
  group_by(year, fortnight_group) %>%
  summarise(
    mean_value = mean(value),
    start_date = min(date),
    end_date = max(date)
  ) %>%
  ungroup()

方法3:自定义双周起始日(按需选择)

如果需要指定双周的起始基准日(比如每年1月1日为第一组起始),可以通过计算日期与年度起始日的天数差来分组:

grouped_data <- data %>%
  mutate(
    year = year(date),
    # 生成当年1月1日的日期
    year_start = as.Date(paste0(year, "-01-01")),
    # 计算日期与年度起始日的天数差,每14天为一组
    fortnight_group = floor(as.numeric(date - year_start) / 14) + 1
  ) %>%
  group_by(year, fortnight_group) %>%
  summarise(
    mean_value = mean(value),
    start_date = min(date),
    end_date = max(date)
  ) %>%
  ungroup()

补充说明

  • 方法1和方法3的双周组严格限制在年度内,不会出现跨年度的分组;方法2基于年度周数,年末部分双周可能跨年度,可根据实际需求选择。
  • 所有方法均通过year与fortnight_group联合分组,保证每年度的双周组独立计数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 13:27:50