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

如何在R中实现一列行与另一列后续5-10行的事件匹配并生成check列?

解决R中添加check列的问题

嗨,我来帮你搞定这个需求!根据你描述的规则——当某行的observ2为1,并且在它的前5到10天内存在observ1为1的记录时,对应行的check列显示TRUE(就像你说的第14行,因为第6行的observ1是1,和第14行间隔8天,正好在5-10天范围内),我给你两种常用的实现方案,分别适用于行号对应日期和有单独日期列的情况。

方案1:行号直接对应天数(无单独日期列)

如果你的数据表行号就是按日期顺序排列的,没有缺失的话,可以用dplyr包来快速实现:

首先加载dplyr(如果没安装的话先运行install.packages("dplyr")):

library(dplyr)

然后执行以下代码添加check列:

# 假设你的数据表叫df
df <- df %>%
  mutate(
    check = case_when(
      # 只有当observ2为1时才检查条件
      observ2 == 1 ~ sapply(row_number(), function(current_row) {
        # 计算需要检查的行范围:当前行前10天到前5天,确保不超出数据表边界
        start_row <- max(1, current_row - 10)
        end_row <- max(1, current_row - 5)
        # 检查这个范围内的observ1是否有等于1的
        any(observ1[start_row:end_row] == 1)
      }),
      # 其他情况都返回FALSE
      TRUE ~ FALSE
    )
  )

方案2:数据表有单独的日期列(更准确)

如果你的数据表有格式为Date类型的日期列(比如叫date),用日期计算会更严谨,避免行号不连续的问题:

library(dplyr)

df <- df %>%
  mutate(
    check = case_when(
      observ2 == 1 ~ sapply(date, function(current_date) {
        # 定义日期范围:当前日期往前推10天到5天
        date_range <- between(date, current_date - 10, current_date - 5)
        # 检查该范围内的observ1是否有1
        any(observ1[date_range] == 1)
      }),
      TRUE ~ FALSE
    )
  )

如果你需要的是反过来的逻辑(observ1为1时检查后续5-10天的observ2)

如果你的需求其实是:当某行的observ1为1,并且在它之后的5-10天内有observ2为1,对应行的check显示TRUE,只需要稍微修改代码:

行号版本:

df <- df %>%
  mutate(
    check = case_when(
      observ1 == 1 ~ sapply(row_number(), function(current_row) {
        end_row <- min(nrow(df), current_row + 10)
        start_row <- min(nrow(df), current_row + 5)
        any(observ2[start_row:end_row] == 1)
      }),
      TRUE ~ FALSE
    )
  )

日期版本:

df <- df %>%
  mutate(
    check = case_when(
      observ1 == 1 ~ sapply(date, function(current_date) {
        date_range <- between(date, current_date + 5, current_date + 10)
        any(observ2[date_range] == 1)
      }),
      TRUE ~ FALSE
    )
  )

你可以根据自己的实际数据表结构选择对应的代码,运行后就能得到符合要求的check列啦!

内容的提问来源于stack exchange,提问作者Oluf Sändrostrom

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.29 00:47:47