R语言筛选Depth大于500前连续递增行的实现问题
R语言实现多组连续递增Depth序列提取方案
核心思路
先对所有严格连续递增的Depth行生成独立分组ID,再针对每个分组筛选出Depth首次超过500前的所有行,合并后即为符合要求的结果,同时天然避免重复Depth的统计问题。
实现代码
首先加载依赖包(仅需运行一次):
library(tidyverse)
核心处理代码:
newdf <- df %>% # 1. 计算当前行与上一行的Depth差值,首行默认差值为正,归为新组 mutate(depth_diff = Depth - lag(Depth, default = -Inf), # 2. 差值<=0时生成新分组ID,保证每个组内的Depth都是严格连续递增 group_id = cumsum(depth_diff <= 0)) %>% # 3. 按分组维度处理 group_by(group_id) %>% # 4. 筛选分组内所有早于第一个Depth>500的行,无超500值的分组全保留 filter(cumsum(Depth > 500) == 0) %>% # 5. 移除辅助列,还原原始数据结构 ungroup() %>% select(-depth_diff, -group_id)
方案说明
- 针对25万行数据完全适配,所有运算为向量式操作,运行效率高
- 自动识别所有独立的连续递增序列,不会漏记多组短序列
- 分组逻辑自动过滤了Depth重复、递减的行,无需额外做去重处理
- 若需要严格排除同分组内的重复Depth,可在filter步骤前补充
filter(depth_diff > 0)
内容的提问来源于stack exchange,提问作者Meg.abytes
相关产品推荐
相关产品推荐

