我想计算入睡和醒来之间的中点。我有点挣扎,因为我没有约会,只有时间hh:mm。
例如,如果您在凌晨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"))
将两个时间对象转换为数字,计算它们的平均值,然后将它们转换回时间对象。
library(dplyr)
library(lubridate)
DF %>%
mutate_all(hm) %>%
mutate(time_end = time_end + (time_end < time_start) * days(1)) %>%
mutate_all(as.numeric) %>%
rowMeans %>%
seconds_to_period %>%
{sprintf("%02d:%02d", hour(.), minute(.))}
# [1] "03:17" "02:00" "02:30" "04:00" "03:00" "06:00"