根据第一次遇到最大值限制行

restricting rows based on first encounter of maximum value

我有一个数据集,如果一列中的列值超过 120 天,我想限制它。例如,

      ticket date        timelag
       1     2009-01-01 
       1     2010-01-01     360
       1     2010-02-02      30
       2     2010-02-02       
       2     2010-02-03       1
       2     2010-02-04       1
       3     2009-01-01      
       3     2009-01-02       1
       3     2009-01-03       1
       3     2009-08-06      130
       3     2009-08-07       1
       3     2010-02-01      140

所以在这种情况下,工单 1 在第二个事件中超过了 120 天的时滞,所以我想在此之后丢弃工单 1 的后续行。在情况 2 中,没有工单事件持续时间超过 120 天,因此该工单的所有行都需要保持完整。因此,在情况 3 中,票证有两个连续的时间段,超过 120 天,但我想在遇到第一个 120 天的时间段时立即限制行,即 120 天之前的活动日。因此,对于工单 3,仅应报告前三个事件的日期,其余的将被丢弃。

关于如何限制这些行有什么建议吗?谢谢

您可以使用-

library(dplyr)

df %>%
  mutate(date = as.Date(date)) %>%
  group_by(ticket) %>%
  slice({
    tmp <-  diff(date) > 30
    if(any(tmp)) 1:which.max(tmp) else row_number()
  }) %>% ungroup

#  ticket date      
#   <int> <date>    
#1      1 2009-01-01
#2      2 2010-02-02
#3      2 2010-02-03
#4      2 2010-02-04
#5      3 2009-01-01
#6      3 2009-01-02
#7      3 2009-01-03