У меня есть df, и я хочу повернуть его, чтобы получить время начала и окончания для каждого идентификатора и для элементов статуса 14.
Звучит как вызов, и я пытался решить его с нулевой удачей.
Итак, мой фрейм данных выглядит так:
id changes_dttm old_status_cd new_status_cd
1 29/01/2020 08:45 13 14
2 29/01/2020 09:39 13 14
2 29/01/2020 06:24 14 13
2 28/01/2020 20:11 13 14
2 26/01/2020 17:34 14 13
2 26/01/2020 16:12 13 14
2 26/01/2020 09:42 12 13
3 26/01/2020 13:58 13 14
3 26/01/2020 09:47 14 13
3 25/01/2020 13:43 -3 14
3 25/01/2020 06:01 12 -3
4 23/01/2020 05:54 -2 20
4 22/01/2020 10:24 14 -2
4 21/01/2020 11:44 13 14
Желаемые результаты :
id changes_dttm old_status_cd new_status_cd 14 Start 14 end
1 29/01/2020 08:45 13 14 29/01/2020 08:45
2 29/01/2020 09:39 13 14 29/01/2020 09:39
2 28/01/2020 20:11 13 14 28/01/2020 20:11 29/01/2020 06:24
2 26/01/2020 16:12 13 14 26/01/2020 16:12 26/01/2020 17:34
3 26/01/2020 13:58 13 14 26/01/2020 13:58
3 25/01/2020 13:43 -3 14 25/01/2020 13:43 26/01/2020 09:47
4 21/01/2020 11:44 13 14 21/01/2020 11:44 22/01/2020 10:24
Пустое значение - это когда дата и время окончания указаны для идентификатора, поэтому это правильно:)
Мой код для получения значения выше подмножества:
library(data.table)
library(lubridate)
id <- c(1,2,2,2,2,2,2,3,3,3,3,4,4,4)
changes_dttm <- c("29/01/2020 08:45","29/01/2020 09:39", "29/01/2020 06:24","28/01/2020 20:11","26/01/2020 17:34","26/01/2020 16:12","26/01/2020 09:42","26/01/2020 13:58","26/01/2020 09:47","25/01/2020 13:43","25/01/2020 06:01","23/01/2020 05:54","22/01/2020 10:24","21/01/2020 11:44")
old_status_cd <- c(13,13,14,13,14,13,12,13,14,-3,12,-2,14,13)
new_status_cd <- c(14,14,13,14,13,14,13,14,13,14,-3,20,-2,14)
df <- data.frame(id,as.POSIXct(df$changes_dttm, format="%d/%m/%Y %H:%M") , old_status_cd, new_status_cd)
colnames(df)[2] <- "changes_dttm"