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

R语言计算暴雪事件前后间隔天数及生成对应分类变量的方法

实现思路
  • 首先提取数据中所有暴雪事件(bliz == 1)的日期,存储为独立向量
  • 逐行计算每条记录的日期与最近暴雪日期的天数差值,得到数值变量num_days_after
  • 基于差值直接生成两个二分类标识变量:
    • day_before_blizzard:差值为-1时取值1,其余为0
    • 3days_after:差值为1、2、3时取值1,其余为0
实现代码
library(dplyr)

# 构造示例基础数据
d <- data.frame(date = seq(as.POSIXct("2018-12-01"), as.POSIXct("2019-01-31"), by="day"))
d <- d %>% 
  mutate(day = as.numeric(strftime(date, format = "%d")),
         bliz = ifelse(day == 13, 1, 0)) %>% 
  select(-day)

# 提取所有暴雪发生日期
bliz_dates <- d$date[d$bliz == 1]

# 生成目标变量
d <- d %>%
  rowwise() %>%
  mutate(
    # 计算与最近暴雪的天数差,存在多场暴雪时自动匹配最近的一场
    num_days_after = as.numeric(difftime(date, bliz_dates[which.min(abs(difftime(date, bliz_dates, units = "days")))], units = "days")),
    day_before_blizzard = as.integer(num_days_after == -1),
    `3days_after` = as.integer(num_days_after %in% 1:3)
  ) %>%
  ungroup()

# 查看输出结果
head(d, n = 5)
补充说明

上述代码兼容多场暴雪的场景,无需因为暴雪事件增加修改计算逻辑。如果仅需要统计某一场特定暴雪的前后间隔,只需修改bliz_dates的筛选条件,指定对应暴雪的日期即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 21:45:02