I've been struggling to conditionally calculate a time difference across multiple rows/columns. I would like to calculate by id the time difference between an initial negative result and a subsequent positive. I've been trying to do this within dplyr but maybe I need another approach.
Code for data :
id <- c(1,1,1,1,2,2,2,2,3,3,3,3)
firstnegative <-c('T', 'F','F','F', 'F','F','F','F','T','F','F','F')
organism <- c('neg', 'COVID', 'COVID', 'neg', 'COVID', 'neg', 'neg', 'neg', 'neg', 'neg', 'COVID', 'COVID')
date <- seq(as.Date("2020/3/1"), as.Date('2020/3/12'), "days")
data <- data.frame (id,date, organism, firstnegative)
id date organism firstnegative
1 2020-03-01 neg T
1 2020-03-02 COVID F
1 2020-03-03 COVID F
1 2020-03-04 neg F
2 2020-03-05 COVID F
2 2020-03-06 neg F
2 2020-03-07 neg F
2 2020-03-08 neg F
3 2020-03-09 neg T
3 2020-03-10 neg F
3 2020-03-11 COVID F
3 2020-03-12 COVID F
Expected Result
id date organism firstnegative timediff
1 2020-03-01 neg T 1d
1 2020-03-02 COVID F
1 2020-03-03 COVID F
1 2020-03-04 neg F
2 2020-03-05 COVID F
2 2020-03-06 neg F
2 2020-03-07 neg F
2 2020-03-08 neg F
3 2020-03-09 neg T 2d
3 2020-03-10 neg F
3 2020-03-11 COVID F
3 2020-03-12 COVID F
The length between the first negative and subsequent positives is unknown and changes. I can't assume a lead of 1.
Any thoughts/approaches would be greatly appreciated.