过滤数据框以保留行,直到列值更改为0

问题描述 投票:0回答:1

我有这个数据框,

`df <- tibble(
  key = rep(1:3, c(8,4,5)),
  Date = c(seq(as.Date('2016-12-17'), as.Date('2016-12-19'), '1 day'),
       seq(as.Date('2016-12-21'), as.Date('2016-12-23'), '1 day'),
       seq(as.Date('2016-12-29'), as.Date('2016-12-30'), '1 day'),
       seq(as.Date('2017-05-18'), as.Date('2017-05-21'), '1 day'),
       seq(as.Date('2017-05-18'), as.Date('2017-05-20'), '1 day'),
       seq(as.Date('2017-05-23'), as.Date('2017-05-24'), '1 day')),
  flag= c(1,1,1,0,1,1,0,1,1,1,1,1,1,1,1,0,1)
  )` 

对于每个“键”,我需要在“标志”首次变为0之前,或者如果“键”没有0标志,然后返回“日期”的最大值,则需要“日期”的最大值。 >

我需要以下输出。

key Date        flag
 1 2016-12-19     1
 2 2017-05-21     1
 3 2017-05-20     1

有人可以帮我吗?

谢谢。

我有这个数据帧,`df

r dplyr dt date-arithmetic
1个回答
0
投票

在下面的代码中,我使用了match返回第一个匹配位置的事实。然后,我用行索引创建一个额外的列,以便可以在第一次出现flag = 1

© www.soinside.com 2019 - 2024. All rights reserved.