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

在R中如何计算tibble格式时间序列数据的连续7天最大值

实现方法

你需要用到tidyverse、lubridate(处理时间格式)和slider(实现按时间滑动窗口计算)包,具体代码如下:

  1. 安装并加载依赖包
# 未安装的话先执行安装
# install.packages(c("tidyverse", "lubridate", "slider"))
library(tidyverse)
library(lubridate)
library(slider)
  1. 构造测试数据(你可以替换为自己的tibble数据)
df <- tibble(
  time = ymd_hms(c("2015-01-08 12:30:00", "2015-01-08 13:00:00", 
                   "2015-01-11 14:00:00", "2015-01-11 15:00:00",
                   "2015-02-04 12:30:00", "2015-02-04 13:00:00")),
  DOY = c(8,8,11,11,35,35),
  Value = c(0.664, 0.647, 0.669, 0.644, 0.664, 0.647)
)
  1. 计算连续7天窗口的Max值
    你示例中的Max值为窗口内Value最大值对应的DOY加该Value,对应实现代码:
result <- df %>%
  arrange(time) %>% # 必须先按时间升序排序,保证滑动窗口逻辑正确
  mutate(Max = slide_index_dbl(
    .x = cur_data(),
    .i = time, # 以time列为滑动的时间索引
    .f = ~{
      max_idx <- which.max(.x$Value)
      .x$DOY[max_idx] + .x$Value[max_idx]
    },
    .after = days(7) # 窗口范围为当前时间到之后7天内的所有观测,可按需调整
  ))

参数调整说明

  • 若需要计算当前时间往前7天的窗口,把.after = days(7)替换为.before = days(7)
  • 若需要计算以当前时间为中心的7天窗口,可同时设置.before = days(3.5), .after = days(3.5)
  • 若仅需要窗口内的Value最大值,把.f函数内容修改为max(.x$Value)即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 12:45:05