
library(dplyr)

set.seed(1234)
df <- data.frame(Date = seq(Sys.Date()- 19 , Sys.Date(), 1) ,
                 PnL  = runif(20, -150, 100))

df %>% mutate(sign = ifelse(PnL > 0 , "pos", "neg"),
              times = sequence(rle(as.character(sign))$lengths) - 1,
              GrZTimes = ifelse(sign == "pos" ,times , 0), 
              LeZTimes = ifelse(sign == "neg" ,times , 0))
 