Количество дней между двумя последовательными событиями - PullRequest
1 голос
/ 18 марта 2020

Я пытаюсь сгенерировать переменную diff для обозначения количества дней между двумя последовательными событиями.

library(outbreaks)
df <- measles_hagelloch_1861[order(measles_hagelloch_1861$date_of_prodrome), ] 
library(lubridate)
library(plyr)

# First date
firs_date <- min(df$date_of_prodrome)

# Commulative number of days
df$cum_number_day <- difftime(df$date_of_prodrome, firs_date, units = 'days')
head(df$cum_number_day)

# The number of days between two consecutive events
df$diff <- difftime(lag(df$date_of_prodrome, 1), df$date_of_prodrome, units = "days" )
head(df$diff)

и результат

Time differences in days
[1]  0  2  8  8  9 12
Time differences in days
[1] 0 0 0 0 0 0

Не могли бы вы объяснить, почему я получить желаемый результат с первой командой, но просто получить 0 0 0 для второй?

1 Ответ

1 голос
/ 18 марта 2020

Проблема в том, что ваш код использует stats::lag вместо dplyr::lag. Смотрите разницу:

df$diff <- difftime(stats::lag(df$date_of_prodrome, 1),df$date_of_prodrome, units = "days" )
head(df$diff)

#Time differences in days
#[1] 0 0 0 0 0 0

df$diff <- difftime(dplyr::lag(df$date_of_prodrome, 1), df$date_of_prodrome, units = "days" )
head(df$diff)

#Time differences in days
#[1] NA -2 -6  0 -1 -3
...