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

R语言中基于滚动时间窗口的可报告条件数据过滤方法问询

实现可报告条件的过滤步骤

假设你的数据集已经按**时间列(比如datetime)**升序排列,且PM_Condition是标记24小时滚动PM均值达标(>指定值)的布尔列,Wind_Condition是标记风向处于目标范围的布尔列(每行对应10分钟时长),可以按以下步骤操作:

1. 加载必要的包

确保你装了dplyr和slider(用来处理滚动窗口计算,比基础窗口函数更灵活):

library(dplyr)
library(slider)

2. 计算滚动24小时内的风向达标累计时长

因为每行是10分钟数据,24小时对应144个数据点(24*6)。我们用滚动窗口统计Wind_Condition为TRUE的行数,再转换成小时:

df <- df %>%
  mutate(
    # 滚动24小时内风向达标的累计小时数 = 达标行数 * 10分钟 / 60
    wind_hours = (slide_dbl(Wind_Condition, ~sum(.x), .before = 143, .complete = TRUE) * 10) / 60
  )
  • .before = 143:表示当前行往前数143行,加上当前行一共144行(正好覆盖24小时)
  • .complete = TRUE:仅当窗口内凑满144行时才计算结果,避免开头不完整窗口的无效数据干扰

3. 生成Reportable Condition列

结合PM_Condition(24小时滚动PM均值达标)和wind_hours >=12两个条件,满足则设为1,否则0:

df <- df %>%
  mutate(
    `Reportable Condition` = ifelse(PM_Condition & (wind_hours >= 12), 1, 0)
  )

补充说明

  • 如果你的PM_Condition还没正确计算24小时滚动均值达标,可以用slider::slide_dbl先完成这一步:
    df <- df %>%
      mutate(
        pm_24h_avg = slide_dbl(pm_column, ~mean(.x), .before = 143, .complete = TRUE),
        PM_Condition = pm_24h_avg > 指定数值
      )
    
  • 若不想用slider,也可以用dplyr配合tibbletime包的roll_sum函数实现,但slider的语法更直观易读。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 16:03:36