计算两天无日期的hh:mm变量的中点

问题描述 投票:1回答:2

我想计算入睡和醒来之间的中点。我有点挣扎,因为我没有约会,只有时间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"))
r lubridate chron
2个回答
1
投票

将两个时间对象转换为数字,计算它们的平均值,然后将它们转换回时间对象。

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"
© www.soinside.com 2019 - 2024. All rights reserved.