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

如何在R中根据Trigger列生成标记序列起止的布尔列

R实现方法

方法1:使用dplyr包(推荐,代码可读性高)

首先加载依赖包、构造示例数据:

# 加载dplyr
library(dplyr)

# 构造示例数据
df <- data.frame(Trigger = c(1, 1, 0, 1, 0, 1, 1))

直接通过偏移函数lag判断即可生成目标列:

df <- df %>%
  mutate(
    # 连续1序列首行判断规则:当前行Trigger为1,且上一行Trigger不为1(首行默认上一行值为0)
    Beginning = Trigger == 1 & lag(Trigger, default = 0) != 1,
    # 连续1结束后首次0的判断规则:当前行Trigger为0,且上一行Trigger为1
    End = Trigger == 0 & lag(Trigger, default = 0) == 1
  )

运行后输出结果和示例完全匹配:

TriggerBeginningEnd
1TRUEFALSE
1FALSEFALSE
0FALSETRUE
1TRUEFALSE
0FALSETRUE
1TRUEFALSE
1FALSEFALSE

方法2:Base R实现

不需要安装额外依赖包,用基础向量运算即可实现:

df <- data.frame(Trigger = c(1, 1, 0, 1, 0, 1, 1))
n <- nrow(df)
# 手动构造偏移后的Trigger向量,首行补0
lag_trigger <- c(0, df$Trigger[-n])

df$Beginning <- df$Trigger == 1 & lag_trigger != 1
df$End <- df$Trigger == 0 & lag_trigger == 1

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 12:48:02