Как использовать военное время для расчета временного интервала - PullRequest
1 голос
/ 13 марта 2019

Я использую R и пытаюсь вычислить количество часов, которые кто-то спал. В настоящее время время сна и время бодрствования сообщаются в военное время, поэтому, когда я использую difftime (), интервал между сном в 9 вечера (21:00) и пробуждением в 7:00 (07:00) вместо этого составляет 14 часов, вместо этого 10 часов. Может ли кто-нибудь помочь мне понять, что мне нужно сделать, чтобы получить правильную разницу во времени?

Пример данных:

              bedtime                   waketime
1             1899-12-31 01:00:00       1899-12-31 06:00:00
2             1899-12-31 21:00:00       1899-12-31 07:00:00
3             1899-12-31 22:00:00       1899-12-31 06:00:00

Используемый скрипт:

difftime(PSQI$wakeup_3, PSQI$bedtime_1, units = "hours")
 [1]   5.00 -14.00 -16.00 

Когда то, что я искал бы, это

[1]   5.00  10.00  8.00 

Спасибо всем, кто может помочь!

1 Ответ

2 голосов
/ 13 марта 2019

Объединяя комментарии выше от @thelatemail и @ Dave2e, мы можем сделать

with(df, ifelse(bedtime > waketime, waketime + 86400 - bedtime, waketime - bedtime))
#[1]  5 10  8

Мы добавляем 86400 секунд (1 день), только если bedtime > waketime, а затем берем разницу. Убедитесь, что столбцы bedtime и waketime являются действительными POSIXct класс.

данные

df <- structure(list(bedtime = structure(c(-2209096006, -2209024006, 
-2209020406), class = c("POSIXct", "POSIXt"), tzone = ""), waketime = 
structure(c(-2209078006, 
-2209074406, -2209078006), class = c("POSIXct", "POSIXt"), tzone = 
"")), row.names = c(NA, 
-3L), class = "data.frame")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...