Вычислить среднюю точку для переменной чч: мм за два дня без даты - PullRequest
1 голос
/ 08 мая 2020

Я хотел бы вычислить середину между засыпанием и пробуждением. Я немного борюсь, потому что у меня нет даты, только время в формате чч: мм.

Например, если вы go ложитесь спать в 2 часа ночи и просыпаетесь в 10 часов утра, средняя точка будет 6 часов утра

Ниже приведен пример, и я был бы рад вашей помощи. !

DF <- data.frame(time_start = c("23:45", "21:30", "22:00", "23:00", "00:30", "02:00"),
                 time_end = c("06:49", "06:30", "07:00", "09:00", "5:30", "10:00"))

1 Ответ

3 голосов
/ 08 мая 2020

Преобразуйте два объекта времени в числа c, вычислите их средние значения, а затем преобразуйте их обратно в объекты времени.

library(dplyr)
library(lubridate)

DF %>%
  mutate_all(hm) %>%
  mutate(time_end = time_end + (time_end < time_start) * days(1),
         midpoint = seconds_to_period(as.numeric(time_start + time_end) / 2)) %>%
  mutate_all(~sprintf("%02d:%02d", hour(.), minute(.)))

#   time_start time_end midpoint
# 1      23:45    06:49    03:17
# 2      21:30    06:30    02:00
# 3      22:00    07:00    02:30
# 4      23:00    09:00    04:00
# 5      00:30    05:30    03:00
# 6      02:00    10:00    06:00
...