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

在R中如何根据delta列连续三个1的规则获取stopping_file列对应值?

R语言:找出delta列连续三个1对应的stopping_file值

首先构造示例数据框:

df <- data.frame(
  stopping_file = c(14, 20, 21, 22),
  delta = c(6, 1, 1, 1)
)

方法1:基础R原生实现

通过滑动窗口逻辑检查连续的1,定位目标位置:

# 遍历每个可能的起始位置,检查连续3个delta是否为1
consecutive_check <- sapply(1:(nrow(df)-2), function(i) all(df$delta[i:(i+2)] == 1))
# 取第一个符合条件的窗口,对应的末尾行位置
target_row <- which(consecutive_check)[1] + 2
# 提取对应stopping_file值
result <- df$stopping_file[target_row]
print(result) # 输出22

方法2:使用zoo包的滑动窗口函数

借助zoo包的rollapply可以更简洁实现:

library(zoo)
# 以右对齐方式生成窗口大小为3的检查结果
window_result <- rollapply(df$delta, width = 3, FUN = function(x) all(x == 1), align = "right")
# 定位第一个符合条件的位置并提取对应值
result <- df$stopping_file[which(window_result)[1]]
print(result) # 输出22

两种方法都会返回首次出现连续三个1时,最后一个1对应的stopping_file值。如果存在多组连续三个1的情况,代码会取第一组的末尾值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 17:25:31