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

如何筛选符合特定条件的行及其上一行?(R语言dplyr场景)

分组筛选时保留符合条件行及其上一行的R语言实现

你当前的代码已经能按ID_number分组筛选出time_diff_hour > 8或该字段为NA的行,要同时保留这些符合条件行的上一行,可以通过添加标记列的方式实现:

修改后的代码

data2 <- data2 %>% 
  group_by(ID_number) %>% 
  # 标记需要保留的行:自身符合条件,或下一行符合条件(即当前行是符合条件行的上一行)
  mutate(keep_row = (time_diff_hour > 8 | is.na(time_diff_hour)) | 
           lead(time_diff_hour > 8 | is.na(time_diff_hour), default = FALSE)) %>% 
  filter(keep_row) %>% 
  # 移除临时标记列
  select(-keep_row) %>% 
  ungroup()

代码说明

  • lead()函数用于获取同组内下一行的筛选判断结果,default = FALSE确保组内最后一行没有下一行时,不会返回NA,而是判定为不需要保留
  • keep_row列会标记两种行:一是本身满足原筛选条件的行,二是下一行满足原筛选条件的行(也就是目标行的上一行)
  • 最后筛选出标记为TRUE的行,并清理临时生成的标记列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 20:54:54