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

如何在tsibble中手动控制fill_gaps的补全间隔?

手动设置tsibble的fill_gaps补全间隔,统一时间序列周期

问题背景

你有两个同月同日但年份相差2年的数据框,转换为以yearweek为索引的tsibble后,因原数据索引步长的最大公约数不同,导致fill_gaps()补全缺失值时使用的间隔不一致:2020年数据的补全间隔为4周,2022年数据为1周,无法统一周期。

原始数据及问题复现代码:

library(tidyverse)
library(fpp3)

df_2020 <- tibble(month_day = as_date(c('2020-1-1','2020-2-1','2020-3-1')),
                 amount = c(5, 2, 1))

df_2022 <- tibble(month_day = as_date(c('2022-1-1','2022-2-1','2022-3-1')),
                 amount = c(5, 2, 1))

# 转换为tsibble
ts_2020 <- df_2020 |> mutate(year_week = yearweek(month_day)) |> 
  as_tsibble(index = year_week)
 
ts_2022 <- df_2022 |> mutate(year_week = yearweek(month_day)) |> 
  as_tsibble(index = year_week)

# 补全缺失值后间隔不一致
ts_2020_filled <- ts_2020 |> fill_gaps()
ts_2022_filled <- ts_2022 |> fill_gaps()

解决方案

要统一补全间隔(比如统一为每周1次),可以通过以下两种方法实现:

方法1:手动构建目标间隔的完整索引,关联原数据

通过complete()函数生成你需要的间隔(如每周)的完整时间序列,再转换为tsibble,确保两个数据的补全间隔一致:

# 处理2020年数据:生成每周完整索引
ts_2020_full <- df_2020 |>
  mutate(year_week = yearweek(month_day)) |>
  complete(year_week = seq(min(year_week), max(year_week), by = 1)) |>
  as_tsibble(index = year_week)

# 处理2022年数据:同样生成每周完整索引
ts_2022_full <- df_2022 |>
  mutate(year_week = yearweek(month_day)) |>
  complete(year_week = seq(min(year_week), max(year_week), by = 1)) |>
  as_tsibble(index = year_week)

方法2:将tsibble标记为不规则,手动指定补全间隔

先将tsibble设置为不规则序列(.regular = FALSE),再在fill_gaps()中手动指定目标间隔的索引序列:

# 转换为不规则tsibble
ts_2020_irreg <- df_2020 |>
  mutate(year_week = yearweek(month_day)) |>
  as_tsibble(index = year_week, .regular = FALSE)

ts_2022_irreg <- df_2022 |>
  mutate(year_week = yearweek(month_day)) |>
  as_tsibble(index = year_week, .regular = FALSE)

# 手动指定每周间隔补全缺失值
ts_2020_filled <- ts_2020_irreg |>
  fill_gaps(year_week = seq(min(year_week), max(year_week), by = 1))

ts_2022_filled <- ts_2022_irreg |>
  fill_gaps(year_week = seq(min(year_week), max(year_week), by = 1))

两种方法都能让两个时间序列以每周为间隔补全缺失值,实现周期统一。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 20:31:13