Arrondir la date POSIX (POSIXct) avec la fonctionnalité de base R
je suis en train de jouer beaucoup avec des dates et des heures pour un paquet que je construis.
trébuchant sur ce post m'a rappelé encore une fois qu'il n'est généralement pas une mauvaise idée de vérifier si quelque chose peut être fait avec les fonctionnalités de base R avant de passer aux paquets contrib.
ainsi, est-il possible de arrondir une date de la classe POSIXct
avec la fonctionnalité de base R?
j'ai vérifié
methods(round)
qui "seulement" m'a donné
[1] round.Date round.timeDate*
Non-visible functions are asterisked
C'est ce que j'aimerais faire (Pseudo Code)
x <- as.POSIXct(Sys.time())
[1] "2012-07-04 10:33:55 CEST"
round(x, atom="minute")
[1] "2012-07-04 10:34:00 CEST"
round(x, atom="hour")
[1] "2012-07-04 11:00:00 CEST"
round(x, atom="day")
[1] "2012-07-04 CEST"
je sais que cela peut être fait avec heuredate , lubridate etc. mais j'aimerais limiter la dépendance des paquets. Donc avant d'aller de l'avant et de vérifier le code source des paquets respectifs, j'ai pensé que je voudrais demander si quelqu'un a déjà fait quelque chose comme ça.
2 réponses
base
a round.POSIXt
pour ce faire. Je ne sais pas pourquoi il ne trouve pas methods
.
x <- as.POSIXct(Sys.time())
x
[1] "2012-07-04 10:01:08 BST"
round(x,"mins")
[1] "2012-07-04 10:01:00 BST"
round(x,"hours")
[1] "2012-07-04 10:00:00 BST"
round(x,"days")
[1] "2012-07-04"
Sur ce thème avec lubridate
, aussi regarder dans le ceiling_date()
et floor_date()
fonctions:
x <- as.POSIXct("2009-08-03 12:01:59.23")
ceiling_date(x, "second")
# "2009-08-03 12:02:00 CDT"
ceiling_date(x, "hour")
# "2009-08-03 13:00:00 CDT"
ceiling_date(x, "day")
# "2009-08-04 CDT"
ceiling_date(x, "week")
# "2009-08-09 CDT"
ceiling_date(x, "month")
# "2009-09-01 CDT"