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

R语言如何统计指定观测点前滑动窗口内0值的出现次数

实现方案

不需要使用dplyr::count,slide_dbl传入自定义函数的参数是P列的向量片段,直接对向量做逻辑判断求和即可得到0值的出现次数,修改后的代码如下:

完整可运行代码

# 加载依赖包
library(tidyverse)
library(slider)

# 原始数据
event <- c("2020-03-25","2020-03-24","2020-03-23","2020-03-22","2020-03-21","2020-03-20","2020-03-19","2020-03-18","2020-03-17","2020-03-16","2020-03-15")
P <- c(71,2,0,23.8,0,23.8,0,0,12,69,9)
df <- data.frame(event,P)

# 计算逻辑
df_result <- df %>% 
  arrange(event) %>% # 按日期升序排列,保证时间窗口顺序正确
  mutate(
    # 原有逻辑:前5天累计和
    ACU_5d = slide_dbl(.x = P, .f = ~sum(.x), .before = 5, .after = -1),
    # 新增逻辑:前5天0值计数
    zero_cnt_5d = slide_dbl(.x = P, .f = ~sum(.x == 0), .before = 5, .after = -1),
    # 仅保留P>60的对应结果
    bar_5d = if_else(P > 60, ACU_5d, NA_real_),
    bar_zero_5d = if_else(P > 60, zero_cnt_5d, NA_real_)
  )

逻辑说明

  • sum(.x == 0)会先对窗口内的向量逐元素判断是否等于0,返回布尔值向量(TRUE/FALSE对应1/0),求和结果就是0值的出现次数,比调用count更简洁高效
  • 计算结果和你给出的示例一致:2020-03-25对应的bar_zero_5d值为2,符合预期

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 18:39:00