Rui Well that certainly is a lot more straight forward than the direction I was trying and you have introduced me to a couple of new functions. Thank you
Jeff -----Original Message----- From: Rui Barradas <ruipbarra...@sapo.pt> Sent: Wednesday, January 12, 2022 5:08 AM To: reichm...@sbcglobal.net; r-help@r-project.org Subject: Re: [R] Method Guidance Hello, Here is a base R solution for what I understand of the question. It involves ave and cumsum. cumsum of the values of Event_A breaks Event_B in segments and ave applies a function to each segment. To find where are the times B, coerce to logical and have which() take care of it. Data in dput format at the end. ave(as.logical(df1$Event_B), cumsum(df1$Event_A), FUN = function(x) { y <- integer(length(x)) y[x] <- which(x) - 1L y }) #[1] 0 1 0 0 1 0 3 0 0 2 More readable, with an auxiliary function. aux_fun <- function(x) { y <- integer(length(x)) y[x] <- which(x) - 1L y } ave(as.logical(df1$Event_B), cumsum(df1$Event_A), FUN = aux_fun) #[1] 0 1 0 0 1 0 3 0 0 2 Now assign this result to a df1 column. Here I just test for equality. new <- ave(as.logical(df1$Event_B), cumsum(df1$Event_A), FUN = aux_fun) identical(new, df1$Time_B) #[1] TRUE # Data df1 <- structure(list(Time = 1:10, Event_A = c(1L, 0L, 0L, 1L, 0L, 0L, 0L, 1L, 0L, 0L), Event_B = c(1L, 1L, 0L, 0L, 1L, 0L, 1L, 1L, 0L, 1L), Time_B = c(0L, 1L, 0L, 0L, 1L, 0L, 3L, 0L, 0L, 2L)), class = "data.frame", row.names = c(NA, -10L)) Hope this helps, Rui Barradas Às 00:56 de 12/01/22, Jeff Reichman escreveu: > R-Help Forum > > > > Looking for a little guidance. Have an issue were I'm trying to > determine the time between when Event A happened(In days) to when a > subsequent Event B happens. For Example at Time 1 Evat A happens and > subsequently Event B happens at the same day (0) and the next day (1) > then Event A happens again at time 4 and Event B happens the next day > and 3 days later so on and so forth. I gather there is no function > that will do that so I suspect I will need to grate so sour of do while loop? > Any suggestions? > > > > > > Time Event_A Event_B Time_B > > 1 1 1 > 0 > > 2 0 1 > 1 > > 3 0 0 > 0 > > 4 1 0 > 0 > > 5 0 1 > 1 > > 6 0 0 > 0 > > 7 0 1 > 3 > > 8 1 1 > 0 > > 9 0 0 > 0 > > 10 0 1 2 > > > > > Jeff Reichman > > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see > https://stat.ethz.ch/mailman/listinfo/r-help > PLEASE do read the posting guide > http://www.R-project.org/posting-guide.html > and provide commented, minimal, self-contained, reproducible code. > ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.