两个连续事件之间的天数
The number of days between two consecutive events
我正在尝试生成一个变量 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
吗?
问题是您的代码使用的是 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
我正在尝试生成一个变量 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
吗?
问题是您的代码使用的是 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