[R] Method Guidance
Rui Barradas
ru|pb@rr@d@@ @end|ng |rom @@po@pt
Wed Jan 12 12:07:57 CET 2022
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 using 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.
>
More information about the R-help
mailing list