【发布时间】:2020-10-17 09:59:31
【问题描述】:
我一直在努力有条件地计算跨多行/多列的时间差。 我想通过 id 计算初始否定结果和后续肯定结果之间的时间差。我一直在尝试在 dplyr 中执行此操作,但也许我需要另一种方法。
数据代码:
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
第一个负数和后续正数之间的长度未知并且会发生变化。我不能假设领先 1。
任何想法/方法将不胜感激。
【问题讨论】: