簡體   English   中英

使用 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 個值獲得默認值,因為您沒有“較舊”的數據。 默認值為NA 因此,結果中的NA

此外,使用滯后只會產生連續事件之間的差異。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM