Вычислить прошедшее время между двумя столбцами datetime («% Y-% m-% dT% H:% M:% OS-05: 00») в R - PullRequest
0 голосов
/ 29 мая 2018

Проблема, которую я пытаюсь решить, состоит в том, что у меня есть 2 переменные POSIXct (начало и конец).Каждая строка классифицирована, и я хочу получить разницу во времени между каждой строкой для каждого уровня.

Мои данные будут выглядеть как

category        start                              end                    level  
a         2018-03-26T11:13:43.5-05:00      2018-03-26T11:13:44.5-05:00      1  
a         2018-03-26T11:13:45.5-05:00      2018-03-26T11:13:46.5-05:00      2  
a         2018-03-26T11:13:48.5-05:00      2018-03-26T11:13:48.5-05:00      3

Для уровня 1 это всегда ноль, так как нетпредыдущий ряд для этой категории.Для уровня 2 прошедшее время должно быть 2018-03-26T11: 13: 45.5-05: 00 (начало, если уровень 2) - 2018-03-26T11: 13: 44.5-05: 00 (конец уровня 1) Аналогичнодля уровня 3 это разница начала уровня 3 и конца уровня 2 Ожидаемый результат:

category   start                                end                 level   diff  
a         2018-03-26T11:13:43.5-05:00    2018-03-26T11:13:44.5-05:00  1      0  
a         2018-03-26T11:13:45.5-05:00    2018-03-26T11:13:46.5-05:00  2      1  
a         2018-03-26T11:13:48.5-05:00    2018-03-26T11:13:48.5-05:00  3      2  

Разница в секундах.

Может кто-нибудь помочь мне решить эту проблему?Спасибо.

1 Ответ

0 голосов
/ 29 мая 2018

Выезд lag.Это позволит вам сравнить значения за текущим значением.Вот пример:

library(dplyr)
df %>% mutate(diff = start - lag(end))

Примечание. По умолчанию будет установлено значение NA для начального значения, но вы можете установить его на 0 с помощью df$diff[1] <- 0

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...