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.

24
demandé sur Community 2012-07-04 12:52:50

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"
37
répondu James 2012-07-04 09:04:42

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"
14
répondu nzcoops 2017-03-28 16:39:59