I need to number by a given observation and order

Viewed 26

I need to number the observations given the following order and to restart when the value offer_start is reached

evconv <- s%>% 
  arrange(id, time) %>% 
  select(id,time,name)
evconv$name=="offer_start"
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE FALSE
[20] FALSE FALSE FALSE FALSE FALSE FALSE  TRUE FALSE FALSE FALSE FALSE  

I need to get something like this:

[1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 1 2 3 4 5
[20] 6 7 8 9 10 11 12 1 2 3 4 
1 Answers

An idea using rle,

x <- c(FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, TRUE, FALSE, FALSE, TRUE)

sequence(colSums(matrix(rle(x)$lengths, ncol = 2)))
#[1] 1 2 3 4 5 6 7 1 2 3
Related