In the following data, for each id
, I would like to remove rows after the first 1
is reached. My data is as follows:
id x
a 0
a 0
a 1
a 0
a 1
b 0
b 1
b 1
b 0
The desired output:
id x
a 0
a 0
a 1
b 0
b 1
Code to reproduce data:
df <- structure(list(id = c("a", "a", "a", "a", "a", "b", "b", "b",
"b"), x = c(0L, 0L, 1L, 0L, 1L, 0L, 1L, 1L, 0L)), class = "data.frame", row.names = c(NA,
-9L))
This is not a duplicate question, although similar to this. I used cumall()
to remove all rows after the first 1
:
df <- df%>%
group_by(id) %>%
filter(cumall(!(x == 1))) %>%
ungroup()
But the caveat here is that I want to include the row with the first 1
as well.
Any help is appreciated, preferably using dplyr
!