Ответ зависит от того, как хранятся ваши метки времени, но давайте предположим, что они имеют тип "POSIXct" "POSIXt"
, как, например, создано lubridate::ymd_hms
.
Тогда мы можем использовать lubridate
и dplyr
,Обратите внимание на использование dplyr::if_else
для предотвращения преобразования дат в числовые.
library(lubridate)
library(dplyr)
data.frame(dttm = ymd_hms(c("2018-5-11 11:15:00",
"2018-5-11 01:57:00"))) %>%
mutate(hr = hour(dttm),
dt = if_else(hr > 9, as_date(dttm + days(1)), as_date(dttm)))
Результат:
dttm hr dt
1 2018-05-11 11:15:00 11 2018-05-12
2 2018-05-11 01:57:00 1 2018-05-11