Объединяя комментарии выше от @thelatemail и @ Dave2e, мы можем сделать
with(df, ifelse(bedtime > waketime, waketime + 86400 - bedtime, waketime - bedtime))
#[1] 5 10 8
Мы добавляем 86400 секунд (1 день), только если bedtime > waketime
, а затем берем разницу. Убедитесь, что столбцы bedtime
и waketime
являются действительными POSIXct
класс.
данные
df <- structure(list(bedtime = structure(c(-2209096006, -2209024006,
-2209020406), class = c("POSIXct", "POSIXt"), tzone = ""), waketime =
structure(c(-2209078006,
-2209074406, -2209078006), class = c("POSIXct", "POSIXt"), tzone =
"")), row.names = c(NA,
-3L), class = "data.frame")