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

使用runner::runner实现按日滑动时间序列窗口及过滤不完整窗口

使用runner::runner()实现指定步长的完整滑动窗口

1. 实现1天步长的滑动窗口

runner()默认会为输入序列的每个观测值生成窗口,这就是你得到1小时步长结果的原因。要实现1天步长的滑动窗口,需通过at参数指定窗口计算的时间点——也就是你希望生成窗口的每日时间节点:

library(runner)

# 生成原始时间序列(每小时一个时间点,覆盖5天+1小时)
t <- seq(from = 0, to = 3600*24*5, by = 3600)

# 生成按天间隔的目标计算时间点(步长为1天)
at_points <- seq(from = 0, to = 3600*24*5, by = 3600*24)

# 调用runner生成指定步长的窗口
result <- runner(
  x = t,
  k = 3600*24*3,  # 窗口时长:3天(86400*3秒)
  idx = t,        # 绑定原始时间索引
  at = at_points, # 指定仅在目标时间点计算窗口
  f = function(x) x  # 替换为你的自定义计算函数
)

通过at参数限制计算节点,就能实现1天步长的滑动窗口,仅在你指定的每日时间点生成窗口结果。

2. 过滤不完整窗口

直接使用runner()的complete = TRUE参数,它会自动校验窗口是否覆盖了完整的k时长,不满足条件的窗口会返回NA,后续可直接过滤这些无效结果:

# 带完整窗口校验的最终代码
result <- runner(
  x = t,
  k = 3600*24*3,
  idx = t,
  at = at_points,
  complete = TRUE, # 仅保留覆盖完整3天时长的窗口结果
  f = function(x) x  # 替换为你的自定义计算函数
)

# 过滤NA值,得到仅包含完整窗口的结果
filtered_result <- result[!is.na(result)]

complete = TRUE会确保每个窗口的时间范围严格匹配设定的k值,只有当窗口包含从当前时间-3天到当前时间的完整区间时,才会执行自定义计算,否则返回NA。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 12:55:08