From 2340e081ffcea4ad0c3cb19a76b364c643ce2325 Mon Sep 17 00:00:00 2001 From: nwickel Date: Wed, 25 Oct 2023 10:59:33 +0200 Subject: [PATCH] Got rid of loops within add_case --- R/add_case.R | 21 +++++++-------------- 1 file changed, 7 insertions(+), 14 deletions(-) diff --git a/R/add_case.R b/R/add_case.R index 87b210d..e5336f9 100644 --- a/R/add_case.R +++ b/R/add_case.R @@ -5,21 +5,14 @@ add_case <- function(data, cutoff = 20) { # TODO: What is the best choice for the cutoff here? - data$timediff <- as.numeric(diff(c(data$date.start[1], data$date.start))) - data$case <- NA - j <- 1 - pb <- utils::txtProgressBar(min = 0, max = nrow(data), initial = NA, style = 3) + data$timediff <- as.numeric(diff(c(data$date.start, utils::tail(data$date.start, 1)))) + data$timeindex <- ifelse(data$timediff <= cutoff, 0, 1) + case_change <- diff(c(0, c(which(data$timeindex == 1), nrow(data)))) + data$case <- rep(seq_along(case_change), case_change) + + data$timediff <- NULL + data$timeindex <- NULL - for (i in seq_len(nrow(data))) { - if (data$timediff[i] <= cutoff) { - data$case[i] <- j - } else { - j <- j + 1 - data$case[i] <- j - } - utils::setTxtProgressBar(pb, i) - } - data$timediff <- NULL data }