La fonction ceilling_date(), du package lubridate, permet d’arrondir une donnée de type « date » à la date la plus grande en fonction de différentes unités :
library(lubridate)
x <- as.POSIXct("2009-08-03 12:01:57.23")
ceiling_date(x, "second")
[1] "2009-08-03 12:01:58 CEST"
#On arrondit à la seconde la plus grande
ceiling_date(x, "minute")
[1] "2009-08-03 12:02:00 CEST"
#On arrondit à la minute la plus grande
ceiling_date(x, "hour")
[1] "2009-08-03 13:00:00 CEST"
#On arrondit à l'heure la plus grande
ceiling_date(x, "day")
[1] "2009-08-04 CEST"
#On arrondit au jour le plus grand
ceiling_date(x, "week")
[1] "2009-08-09 CEST"
ceiling_date(x, "month")
[1] "2009-09-01 CEST"
ceiling_date(x, "year")
[1] "2010-01-01 CEST"
De même, la fonction floor_date(), permet d’arrondir une date à la date la plus petite, et la fonction round_date(), permet d’arrondir une date à la date la plus proche en fonction de différentes unités.
library(lubridate)
x1 <- as.POSIXct("2009-08-03 12:01:57.23")
x2 <- as.POSIXct("2009-08-03 12:42:57.23")
floor_date(x1, "hour")
[1] "2009-08-03 12:00:00 CEST"
#On arrondit à l'heure la plus petite
round_date(x1, "hour")
[1] "2009-08-03 12:00:00 CEST"
round_date(x2, "hour")
[1] "2009-08-03 13:00:00 CEST"
#On arrondit à l'heure la plus proche