I have repeat measures where participants (by ‘site_specific’) were tested weekly for a disease. I have a cumulative day total and # of days since previous test (‘rolling_days’). Additionally I have a binary variable (‘disease_detection’) where 1 = disease detected. Finally, I have a ‘date’ variable that lists the day of disease_detection test.
My hopes are to 0 out ‘rolling_days’ everytime disease_detection = 1 and for the next 60 days, using data.
The approach could be to automatically 0 out the days or (2) create a Yes/no variable indicate a positive status and the next 60 days.
I have tried multiple ways but this is the most recent… It is getting close but is not accurate.
I would appreciate any assistance to get this working!!
Thank you
data_processed <- data %>%
arrange(site_specific, date) %>% # Ensure data is sorted
group_by(site_specific) %>%
mutate(
zero_out = ifelse(disease_detection == 1, "Yes", NA) # Set 'zero_out' to "Yes" when disease_detection = 1
) %>%
mutate(
detection_date = ifelse(disease_detection == 1, date, NA),
detection_date = zoo::na.locf(detection_date, na.rm = FALSE) # Forward fill detection_date
) ungroup() %>%
mutate(
days_since_detection = as.numeric(date - detection_date),
zero_out = ifelse(days_since_detection <= 60, "Yes", zero_out) # Set 'zero_out' to "Yes" if within 60 days
) %>%
select(-detection_date, -days_since_detection) # Remove temporary columns
> dput(data)
structure(list(site_specific = c("HPB0002", "HPB0002", "HPB0002",
"HPB0002", "HPB0002", "HPB0002", "HPB0002", "HPB0002", "HPB0002",
"HPB0002", "HPB0002", "HPB0002", "HPB0002", "HPB0002", "HPB0002",
"HPB0002", "HPB0005", "HPB0005", "HPB0005", "HPB0005", "HPB0005",
"HPB0005", "HPB0005", "HPB0005", "HPB0005", "HPB0005", "HPB0005",
"HPB0005", "HPB0005", "HPB0005", "HPB0005", "HPB0005", "HPB0008",
"HPB0008", "HPB0008", "HPB0008", "HPB0008", "HPB0008", "HPB0008",
"HPB0008", "HPB0008", "HPB0008", "HPB0008", "HPB0008", "HPB0008",
"HPB0008", "HPB0008", "HPB0008", "HPB0009", "HPB0009", "HPB0009",
"HPB0009", "HPB0009", "HPB0009", "HPB0009", "HPB0009", "HPB0009",
"HPB0009", "HPB0009", "HPB0009", "HPB0009", "HPB0009", "HPB0009",
"HPB0009", "HPB0010", "HPB0010", "HPB0010", "HPB0010", "HPB0010",
"HPB0010", "HPB0010", "HPB0010", "HPB0010", "HPB0010", "HPB0010",
"HPB0010", "HPB0013", "HPB0013", "HPB0013", "HPB0013", "HPB0013",
"HPB0013", "HPB0013", "HPB0013", "HPB0013", "HPB0013", "HPB0013",
"HPB0013", "HPB0013", "HPB0017", "HPB0017", "HPB0017", "HPB0017",
"HPB0017", "HPB0017", "HPB0017", "HPB0017", "HPB0017", "HPB0017",
"HPB0017", "HPB0017", "HPB0017", "HPB0017", "HPB0017", "HPB0017",
"HPB0024", "HPB0024", "HPB0024", "HPB0024", "HPB0024", "HPB0024",
"HPB0024", "HPB0024", "HPB0024", "HPB0024", "HPB0024", "HPB0024",
"HPB0024", "HPB0024", "HPB0024", "HPB0024", "HPB0026", "HPB0026",
"HPB0026", "HPB0026", "HPB0026", "HPB0026", "HPB0026", "HPB0026",
"HPB0026", "HPB0026", "HPB0026", "HPB0026", "HPB0026", "HPB0026",
"HPB0026", "HPB0026", "HPB0035", "HPB0035", "HPB0035", "HPB0035",
"HPB0035", "HPB0035", "HPB0035", "HPB0035", "HPB0035", "HPB0035",
"HPB0035", "HPB0035", "HPB0035", "HPB0035", "HPB0035", "HPB0035",
"HPB0047", "HPB0047", "HPB0047", "HPB0047", "HPB0047", "HPB0047",
"HPB0047", "HPB0047", "HPB0047", "HPB0047", "HPB0047", "HPB0047",
"HPB0047", "HPB0047", "HPB0047", "HPB0047", "HPB0058", "HPB0058",
"HPB0058", "HPB0058", "HPB0058", "HPB0058", "HPB0058", "HPB0058",
"HPB0058", "HPB0058", "HPB0058", "HPB0058", "HPB0058", "HPB0058",
"HPB0058", "HPB0058", "HPB0059", "HPB0059", "HPB0059", "HPB0059",
"HPB0059", "HPB0059", "HPB0059", "HPB0059", "HPB0059", "HPB0059",
"HPB0059", "HPB0059", "HPB0059", "HPB0059", "HPB0059", "HPB0059",
"HPB0061", "HPB0061", "HPB0061", "HPB0061", "HPB0061", "HPB0061",
"HPB0061", "HPB0061", "HPB0061", "HPB0061", "HPB0061", "HPB0061",
"HPB0061", "HPB0061", "HPB0061", "HPB0061", "HPB0070", "HPB0070",
"HPB0070"), date = c("10/14/2020", "10/22/2020", "10/27/2020",
"11/3/2020", "11/11/2020", "11/18/2020", "11/26/2020", "12/2/2020",
"12/9/2020", "12/17/2020", "12/22/2020", "12/29/2020", "1/6/2021",
"1/11/2021", "1/18/2021", "1/26/2021", "8/15/2020", "8/21/2020",
"8/28/2020", "9/3/2020", "9/11/2020", "9/18/2020", "9/25/2020",
"10/2/2020", "10/9/2020", "10/16/2020", "10/23/2020", "10/30/2020",
"11/6/2020", "11/13/2020", "11/20/2020", "11/27/2020", "8/6/2020",
"8/12/2020", "8/20/2020", "8/26/2020", "9/4/2020", "9/12/2020",
"9/18/2020", "9/26/2020", "10/2/2020", "10/10/2020", "10/16/2020",
"10/22/2020", "10/28/2020", "11/3/2020", "11/11/2020", "11/19/2020",
"8/12/2020", "8/19/2020", "8/26/2020", "9/1/2020", "9/8/2020",
"9/16/2020", "9/23/2020", "9/30/2020", "10/7/2020", "10/14/2020",
"10/20/2020", "10/28/2020", "11/4/2020", "11/11/2020", "11/18/2020",
"11/25/2020", "8/6/2020", "8/15/2020", "8/20/2020", "8/26/2020",
"9/3/2020", "9/9/2020", "9/17/2020", "9/23/2020", "9/30/2020",
"10/7/2020", "10/14/2020", "10/20/2020", "8/28/2020", "9/1/2020",
"9/8/2020", "9/15/2020", "9/22/2020", "9/29/2020", "10/6/2020",
"10/13/2020", "10/20/2020", "11/3/2020", "11/17/2020", "12/1/2020",
"12/10/2020", "8/20/2020", "8/27/2020", "9/2/2020", "9/10/2020",
"9/16/2020", "9/24/2020", "10/2/2020", "10/9/2020", "10/14/2020",
"10/22/2020", "10/31/2020", "11/6/2020", "11/11/2020", "11/18/2020",
"11/26/2020", "12/3/2020", "8/18/2020", "8/25/2020", "9/2/2020",
"9/10/2020", "9/16/2020", "9/23/2020", "9/30/2020", "10/6/2020",
"10/13/2020", "10/20/2020", "10/27/2020", "11/2/2020", "11/11/2020",
"11/16/2020", "11/23/2020", "11/30/2020", "8/13/2020", "8/20/2020",
"8/27/2020", "9/4/2020", "9/9/2020", "9/16/2020", "9/24/2020",
"10/2/2020", "10/8/2020", "10/16/2020", "10/23/2020", "10/28/2020",
"11/3/2020", "11/11/2020", "11/18/2020", "11/26/2020", "8/14/2020",
"8/21/2020", "8/28/2020", "9/4/2020", "9/10/2020", "9/18/2020",
"9/24/2020", "10/1/2020", "10/9/2020", "10/16/2020", "10/23/2020",
"10/29/2020", "11/6/2020", "11/12/2020", "11/20/2020", "11/27/2020",
"10/1/2020", "10/8/2020", "10/16/2020", "10/21/2020", "10/28/2020",
"11/6/2020", "11/11/2020", "11/18/2020", "11/26/2020", "12/3/2020",
"12/11/2020", "12/16/2020", "1/2/2021", "1/7/2021", "1/12/2021",
"1/24/2021", "8/12/2020", "8/22/2020", "8/27/2020", "9/5/2020",
"9/11/2020", "9/18/2020", "9/26/2020", "10/1/2020", "10/10/2020",
"10/16/2020", "10/21/2020", "10/28/2020", "11/4/2020", "11/11/2020",
"11/19/2020", "11/26/2020", "9/21/2020", "9/29/2020", "10/8/2020",
"10/16/2020", "10/23/2020", "10/28/2020", "11/5/2020", "11/12/2020",
"11/17/2020", "11/25/2020", "11/30/2020", "12/7/2020", "12/15/2020",
"12/21/2020", "12/28/2020", "1/6/2021", "8/18/2020", "8/25/2020",
"8/31/2020", "9/7/2020", "9/16/2020", "9/22/2020", "9/29/2020",
"10/5/2020", "10/13/2020", "10/20/2020", "10/28/2020", "11/2/2020",
"11/9/2020", "11/17/2020", "11/24/2020", "12/16/2020", "8/22/2020",
"8/29/2020", "9/3/2020"), enroll_date = c("10/7/2020", "10/7/2020",
"10/7/2020", "10/7/2020", "10/7/2020", "10/7/2020", "10/7/2020",
"10/7/2020", "10/7/2020", "10/7/2020", "10/7/2020", "10/7/2020",
"10/7/2020", "10/7/2020", "10/7/2020", "10/7/2020", "8/7/2020",
"8/7/2020", "8/7/2020", "8/7/2020", "8/7/2020", "8/7/2020", "8/7/2020",
"8/7/2020", "8/7/2020", "8/7/2020", "8/7/2020", "8/7/2020", "8/7/2020",
"8/7/2020", "8/7/2020", "8/7/2020", "7/30/2020", "7/30/2020",
"7/30/2020", "7/30/2020", "7/30/2020", "7/30/2020", "7/30/2020",
"7/30/2020", "7/30/2020", "7/30/2020", "7/30/2020", "7/30/2020",
"7/30/2020", "7/30/2020", "7/30/2020", "7/30/2020", "8/4/2020",
"8/4/2020", "8/4/2020", "8/4/2020", "8/4/2020", "8/4/2020", "8/4/2020",
"8/4/2020", "8/4/2020", "8/4/2020", "8/4/2020", "8/4/2020", "8/4/2020",
"8/4/2020", "8/4/2020", "8/4/2020", "7/30/2020", "7/30/2020",
"7/30/2020", "7/30/2020", "7/30/2020", "7/30/2020", "7/30/2020",
"7/30/2020", "7/30/2020", "7/30/2020", "7/30/2020", "7/30/2020",
"8/22/2020", "8/22/2020", "8/22/2020", "8/22/2020", "8/22/2020",
"8/22/2020", "8/22/2020", "8/22/2020", "8/22/2020", "8/22/2020",
"8/22/2020", "8/22/2020", "8/22/2020", "8/13/2020", "8/13/2020",
"8/13/2020", "8/13/2020", "8/13/2020", "8/13/2020", "8/13/2020",
"8/13/2020", "8/13/2020", "8/13/2020", "8/13/2020", "8/13/2020",
"8/13/2020", "8/13/2020", "8/13/2020", "8/13/2020", "8/11/2020",
"8/11/2020", "8/11/2020", "8/11/2020", "8/11/2020", "8/11/2020",
"8/11/2020", "8/11/2020", "8/11/2020", "8/11/2020", "8/11/2020",
"8/11/2020", "8/11/2020", "8/11/2020", "8/11/2020", "8/11/2020",
"8/5/2020", "8/5/2020", "8/5/2020", "8/5/2020", "8/5/2020", "8/5/2020",
"8/5/2020", "8/5/2020", "8/5/2020", "8/5/2020", "8/5/2020", "8/5/2020",
"8/5/2020", "8/5/2020", "8/5/2020", "8/5/2020", "8/7/2020", "8/7/2020",
"8/7/2020", "8/7/2020", "8/7/2020", "8/7/2020", "8/7/2020", "8/7/2020",
"8/7/2020", "8/7/2020", "8/7/2020", "8/7/2020", "8/7/2020", "8/7/2020",
"8/7/2020", "8/7/2020", "9/24/2020", "9/24/2020", "9/24/2020",
"9/24/2020", "9/24/2020", "9/24/2020", "9/24/2020", "9/24/2020",
"9/24/2020", "9/24/2020", "9/24/2020", "9/24/2020", "9/24/2020",
"9/24/2020", "9/24/2020", "9/24/2020", "8/7/2020", "8/7/2020",
"8/7/2020", "8/7/2020", "8/7/2020", "8/7/2020", "8/7/2020", "8/7/2020",
"8/7/2020", "8/7/2020", "8/7/2020", "8/7/2020", "8/7/2020", "8/7/2020",
"8/7/2020", "8/7/2020", "9/16/2020", "9/16/2020", "9/16/2020",
"9/16/2020", "9/16/2020", "9/16/2020", "9/16/2020", "9/16/2020",
"9/16/2020", "9/16/2020", "9/16/2020", "9/16/2020", "9/16/2020",
"9/16/2020", "9/16/2020", "9/16/2020", "8/10/2020", "8/10/2020",
"8/10/2020", "8/10/2020", "8/10/2020", "8/10/2020", "8/10/2020",
"8/10/2020", "8/10/2020", "8/10/2020", "8/10/2020", "8/10/2020",
"8/10/2020", "8/10/2020", "8/10/2020", "8/10/2020", "8/14/2020",
"8/14/2020", "8/14/2020"), follow_days = c(7L, 15L, 20L, 27L,
35L, 42L, 50L, 56L, 63L, 71L, 76L, 83L, 91L, 96L, 103L, 111L,
8L, 14L, 21L, 27L, 35L, 42L, 49L, 56L, 63L, 70L, 77L, 84L, 91L,
98L, 105L, 112L, 7L, 13L, 21L, 27L, 36L, 44L, 50L, 58L, 64L,
72L, 78L, 84L, 90L, 96L, 104L, 112L, 8L, 15L, 22L, 28L, 35L,
43L, 50L, 57L, 64L, 71L, 77L, 85L, 92L, 99L, 106L, 113L, 7L,
16L, 21L, 27L, 35L, 41L, 49L, 55L, 62L, 69L, 76L, 82L, 6L, 10L,
17L, 24L, 31L, 38L, 45L, 52L, 59L, 73L, 87L, 101L, 110L, 7L,
14L, 20L, 28L, 34L, 42L, 50L, 57L, 62L, 70L, 79L, 85L, 90L, 97L,
105L, 112L, 7L, 14L, 22L, 30L, 36L, 43L, 50L, 56L, 63L, 70L,
77L, 83L, 92L, 97L, 104L, 111L, 8L, 15L, 22L, 30L, 35L, 42L,
50L, 58L, 64L, 72L, 79L, 84L, 90L, 98L, 105L, 113L, 7L, 14L,
21L, 28L, 34L, 42L, 48L, 55L, 63L, 70L, 77L, 83L, 91L, 97L, 105L,
112L, 7L, 14L, 22L, 27L, 34L, 43L, 48L, 55L, 63L, 70L, 78L, 83L,
100L, 105L, 110L, 122L, 5L, 15L, 20L, 29L, 35L, 42L, 50L, 55L,
64L, 70L, 75L, 82L, 89L, 96L, 104L, 111L, 5L, 13L, 22L, 30L,
37L, 42L, 50L, 57L, 62L, 70L, 75L, 82L, 90L, 96L, 103L, 112L,
8L, 15L, 21L, 28L, 37L, 43L, 50L, 56L, 64L, 71L, 79L, 84L, 91L,
99L, 106L, 128L, 8L, 15L, 20L), rolling.days = c(7L, 8L, 5L,
7L, 8L, 7L, 8L, 6L, 7L, 8L, 5L, 7L, 8L, 5L, 7L, 8L, 8L, 6L, 7L,
6L, 8L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 7L, 6L, 8L,
6L, 9L, 8L, 6L, 8L, 6L, 8L, 6L, 6L, 6L, 6L, 8L, 8L, 8L, 7L, 7L,
6L, 7L, 8L, 7L, 7L, 7L, 7L, 6L, 8L, 7L, 7L, 7L, 7L, 7L, 9L, 5L,
6L, 8L, 6L, 8L, 6L, 7L, 7L, 7L, 6L, 6L, 4L, 7L, 7L, 7L, 7L, 7L,
7L, 7L, 14L, 14L, 14L, 9L, 7L, 7L, 6L, 8L, 6L, 8L, 8L, 7L, 5L,
8L, 9L, 6L, 5L, 7L, 8L, 7L, 7L, 7L, 8L, 8L, 6L, 7L, 7L, 6L, 7L,
7L, 7L, 6L, 9L, 5L, 7L, 7L, 8L, 7L, 7L, 8L, 5L, 7L, 8L, 8L, 6L,
8L, 7L, 5L, 6L, 8L, 7L, 8L, 7L, 7L, 7L, 7L, 6L, 8L, 6L, 7L, 8L,
7L, 7L, 6L, 8L, 6L, 8L, 7L, 7L, 7L, 8L, 5L, 7L, 9L, 5L, 7L, 8L,
7L, 8L, 5L, 17L, 5L, 5L, 12L, 5L, 10L, 5L, 9L, 6L, 7L, 8L, 5L,
9L, 6L, 5L, 7L, 7L, 7L, 8L, 7L, 5L, 8L, 9L, 8L, 7L, 5L, 8L, 7L,
5L, 8L, 5L, 7L, 8L, 6L, 7L, 9L, 8L, 7L, 6L, 7L, 9L, 6L, 7L, 6L,
8L, 7L, 8L, 5L, 7L, 8L, 7L, 22L, 8L, 7L, 5L), disease_detection = c(0L,
0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, NA, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, NA,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, NA, NA, 0L, 0L,
NA, NA, 0L, 0L, 0L, 0L, 0L, 0L, 0L, NA, 0L, 0L, 0L, 0L, 0L, 0L,
1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 1L, 1L, 1L,
1L, 1L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, NA, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, NA, 0L, 0L, 0L, NA, 0L, 0L, 0L, 0L,
NA, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 1L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L, 0L,
0L, 0L, 0L, 0L, 0L, 0L, 0L, NA, 0L, 0L, 0L)), class = "data.frame", row.names = c(NA,
-220L))