Calculate days since last event in R

后端 未结 5 866
别那么骄傲
别那么骄傲 2020-12-17 10:04

My question involves how to calculate the number of days since an event last that occurred in R. Below is a minimal example of the data:

df <- data.frame         


        
5条回答
  •  心在旅途
    2020-12-17 10:41

    It's painful and you lose performance but you can do it with a for loop :

    datas <- read.table(text = "date event
    2000-07-06     0
    2000-09-15     0
    2000-10-15     1
    2001-01-03     0
    2001-03-17     1
    2001-05-23     1
    2001-08-26     0", header = TRUE, stringsAsFactors = FALSE)
    
    
    datas <- transform(datas, date = as.Date(date))
    
    lastEvent <- NA
    tae <- rep(NA, length(datas$event))
    for (i in 2:length(datas$event)) {
      if (datas$event[i-1] == 1) {
        lastEvent <- datas$date[i-1]
      }
      tae[i] <- datas$date[i] - lastEvent
    
      # To set the first occuring event as 0 and not NA
      if (datas$event[i] == 1 && sum(datas$event[1:i-1] == 1) == 0) {
        tae[i] <- 0
      }
    }
    
    cbind(datas, tae)
    
    date event tae
    1 2000-07-06     0  NA
    2 2000-09-15     0  NA
    3 2000-10-15     1   0
    4 2001-01-03     0  80
    5 2001-03-17     1 153
    6 2001-05-23     1  67
    7 2001-08-26     0  95
    

提交回复
热议问题