[英]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 個值獲得默認值,因為您沒有“較舊”的數據。 默認值為NA
。 因此,結果中的NA
。
此外,使用滯后只會產生連續事件之間的差異。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.