У меня есть следующий набор данных:R: вычислить разницу во времени между конкретными событиями
df = data.frame(cbind(user_id = c(rep(1, 4), rep(2,4)),
complete_order = c(rep(c(1,0,0,1), 2)),
order_date = c('2015-01-28', '2015-01-31', '2015-02-08', '2015-02-23', '2015-01-25', '2015-01-28', '2015-02-06', '2015-02-21')))
library(lubridate)
df$order_date = as_date(df$order_date)
user_id complete_order order_date
1 1 2015-01-28
1 0 2015-01-31
1 0 2015-02-08
1 1 2015-02-23
2 1 2015-01-25
2 0 2015-01-28
2 0 2015-02-06
2 1 2015-02-21
Я пытаюсь вычислить разницу в днях между только завершенных заказов для каждого пользователя. Желательный результат будет выглядеть следующим образом:
user_id complete_order order_date complete_order_time_diff
<fctr> <fctr> <date> <time>
1 1 2015-01-28 NA days
1 0 2015-01-31 3 days
1 0 2015-02-08 11 days
1 1 2015-02-23 26 days
2 1 2015-01-25 NA days
2 0 2015-01-28 3 days
2 0 2015-02-06 12 days
2 1 2015-02-21 27 days
, когда я пытаюсь это решение:
library(dplyr)
df %>%
group_by(user_id) %>%
mutate(complete_order_time_diff = order_date[complete_order==1]-lag(order_date[complete_order==1))
возвращает ошибку:
Error: incompatible size (3), expecting 4 (the group size) or 1
Любая помощь с этим будет большим, Спасибо!
Похоже, что вы можете попробовать применить функцию типа 'ff = function (complete, date) date date [c (NA, cummax (complete * seq_along (complete)) [- length (complete)])] 'by_ user_id ', где« complete_order »и« order_date »передаются соответственно« complete »и« date ». –