我正在尝试对大于24小时的时间值进行计算。在这个简短的示例中,我试图根据某人的就寝时间和唤醒时间来计算他们的睡眠时间。但是,如果就寝时间是午夜之后,则以大于24小时的时间值输入数据。例如,如果某人凌晨2点入睡,则其入睡时间值为26:00:00。如何在R中处理大于24小时的时间值?

这是我的简短示例尝试:

library(chron)

bedtime <- c("22:37:34","23:03:32","24:41:23")
waketime <- c("06:41:23","07:25:18","08:47:08")

bedtimeAsTime <- chron(times=bedtime) #results in error
waketimeAsTime <- chron(times=waketime)

#Add 24 hours
waketimeAsTime <- waketimeAsTime + 1

sleepDuration <- waketimeAsTime - bedtimeAsTime

计时功能不接受大于24小时的时间值并将其转换为NA。任何想法如何处理呢?

提前致谢!

最佳答案

我确定已经有一个软件包可以执行此操作,但是您可以使用strsplitas.numeric将所有这些时间转换为秒。

ConvertToSeconds <- function(X)
{
    X <- strsplit(X, ":")
    sapply(X, function(Y) sum(as.numeric(Y) * c(3600, 60, 1)))
}

bedtime <- ConvertToSeconds(bedtime)
waketime <- ConvertToSeconds(waketime) + (86400) #Seconds in 24 hours

sleeptime <- waketime-bedtime
sleeptime
[1] 29029 30106 29145

09-17 21:02
查看更多