这是一个 hack,但它确实有效。至少对于发布的输入数据来说是这样。
sleepTime <- function(bed, wake){
wake <- paste(Sys.Date(), wake)
tmpbed <- paste(Sys.Date(), bed)
d <- apply(data.frame(tmpbed, wake), 1, function(x) difftime(x[2], x[1], units = "hours"))
adjust <- -(d < 0)
tmpbed <- paste(Sys.Date() + adjust, bed)
apply(data.frame(tmpbed, wake), 1, function(x) difftime(x[2], x[1], units = "hours"))
}
bedtime2 <- c("0:00", "23:00")
waketime2 <- c("8:00", "6:45")
sleepTime(bedtime2, waketime2)
#[1] 8.00 7.75
另一个例子,数据在str
问题中发布的输出。
sleepTime(bedtime, waketime)
# [1] 7.750000 6.083333 8.000000 13.000000 8.000000 8.000000
# [7] 7.250000 8.666667 0.250000 7.000000
Data.
bedtime <-
c("23:00:00", NA, "23:00:00", "21:00:00", "22:30:00", "21:30:00",
"00:00:00", "22:30:00", "23:45:00", "22:30:00")
waketime <-
c("06:45:00", "06:05:00", "07:00:00", "10:00:00", "06:30:00",
"05:30:00", "07:15:00", "07:10:00", NA, "05:30:0")