Событие dif_time, фиксирующее появление последней даты
У меня есть некоторые события, определенные id, var1, var2 and date
,
Желаемый вывод для dif_time выглядит следующим образом:
id var1 var2 date1 date2 dif_time
1 120 1 2014-06-03 2014-06-30 26
1 120 1 2014-06-04 2014-06-30 26
1 120 4 2014-06-05 2014-06-30 25
2 220 1 2014-06-05 2014-06-30 23
2 220 1 2014-06-07 2014-06-30 23
3 120 2 2014-06-10 2014-06-30 15
3 120 2 2014-06-12 2014-06-30 15
3 120 1 2014-06-15 2014-06-30 15
5 220 3 2014-06-20 2014-06-30 10
Мне нужно рассчитать dif_time в днях между date1 (дата события) и контрольной датой date2. Ограничение:
Для event (id,var1,var2)
Мне нужно найти last.date1 и рассчитать:
dif_time(days) = date2 - last.date1
, для каждого события и сообщить результат для события.
Я не нашел способ исправить last.date1
, поэтому ваша помощь приветствуется.
1 ответ
Решение
Вы могли бы сделать это
dd<-data.frame(
id = c(1L, 1L, 1L, 2L, 2L, 3L, 3L, 3L, 5L),
var1 = c(120L, 120L, 120L, 220L, 220L, 120L, 120L, 120L, 220L),
var2 = c(1L, 1L, 4L, 1L, 1L, 2L, 2L, 1L, 3L),
date1 = structure(c(16224, 16225, 16226, 16226, 16228, 16231, 16233, 16236, 16241), class = "Date"),
date2 = structure(c(16251, 16251, 16251, 16251, 16251, 16251, 16251, 16251, 16251), class = "Date")
)
last.date1<-with(dd, ave(date1, id, var1, var2, FUN=max, drop=T))
dd$date2-last.date1
dd$diff_time <- dd$date2-last.date1