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

分组多变量滚动平均计算:按londeg、latdeg分组求uw、vw的t-1~t-3滚动平均

解决方案

首先请确保你的数据集已经按dateday升序排列,否则滚动平均的时序计算会出错。你提供的样例数据所有行均为同一日期,实际运行时请使用包含多日时序的完整数据集,才能得到有效结果。

修改后的代码如下:

library(tidyverse)
library(slider)

# 排序保证时序正确
df_sorted <- df %>% 
  arrange(latdeg, londeg, dateday)

# 分组计算双变量滚动平均
df_result <- df_sorted %>%
  group_by(latdeg, londeg) %>% 
  reframe(
    dateday = dateday,
    uw_day0 = uw,
    vw_day0 = vw,
    # 批量计算uw的t-1、t-2、t-3滚动平均
    across(uw,
           .fns = map(1:3, ~\(x) slide_dbl(x, mean, .before = .x, .complete = FALSE)),
           .names = "uw_day{.fn}"
    ),
    # 批量计算vw的t-1、t-2、t-3滚动平均
    across(vw,
           .fns = map(1:3, ~\(x) slide_dbl(x, mean, .before = .x, .complete = FALSE)),
           .names = "vw_day{.fn}"
    )
  ) %>% 
  ungroup()

核心修改说明

  • 新增group_by(latdeg, londeg)逻辑:所有滚动计算仅在同一个经纬度格点的时序数据内执行,不会跨格点混淆计算
  • 用across()函数同时处理uw和vw两个变量,批量生成对应滞后阶数的滚动平均列,自动按变量名_dayN规则命名
  • 保留原代码的窗口规则:.before = N代表计算包含当前行在内、往前共N+1天的平均值;如果你需要计算纯滞后(不含当前行的t-1到t-N均值),可以将slide_dbl的参数调整为.before = .x, .after = -1
  • .complete = FALSE保留原逻辑,数据量不足窗口大小时依然返回有效值,如需不足窗口时返回NA,可将该参数改为TRUE

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 21:15:01