使用 dplyr::lag 计算自第一个事件以来的天数

Using dplyr::lag to calculate days since first event

我正在尝试使用 dplyr::lag 来确定自初始事件以来每个事件已经过去的天数,但我遇到了意外行为。

示例,非常简单的数据:

df <- data.frame(id = c("1", "1", "1", "1", "2", "2"),
                 date= c("4/1/2020", "4/2/2020", "4/3/2020", "4/4/2020", "4/17/2020", "4/18/2020"))

df$date <- as.Date(df$date, format = "%m/%d/%Y")

id      date
1  1  4/1/2020
2  1  4/2/2020
3  1  4/3/2020
4  1  4/4/2020
5  2 4/17/2020
6  2 4/18/2020

我希望做的是创建一个新列 days_since_first_event 来计算初始事件(按 ID)与具有此预期输出的每个后续日期之间的天数

df <- df %>%
group_by(id) %>%
mutate(days_since_first_event = as.numeric(date - lag(date)))

id      date days_since_first_event
1  1  4/1/2020                      0
2  1  4/2/2020                      1
3  1  4/3/2020                      2
4  1  4/4/2020                      3
5  2 4/17/2020                      0
6  2 4/18/2020                      1

但是我得到了这个输出

# A tibble: 6 x 3
# Groups:   id [2]
  id    date       days_since_first_event
  <chr> <date>                      <dbl>
1 1     2020-04-01                     NA
2 1     2020-04-02                      1
3 1     2020-04-03                      1
4 1     2020-04-04                      1
5 2     2020-04-17                     NA
6 2     2020-04-18                      1

对我做错了什么有什么建议吗?

lag() 的前 n 个值获得默认值,因为您没有 'older' 数据。默认值为 NA。因此,您的结果中 NA

此外,使用滞后只会产生连续事件之间的差异。