2017-08-17 1 views
2

Ich habe ein Datetime-Objekt in R.Wie Minuten in R fallen lassen?

tempDateTime<-as.POSIXct("2017-07-13 01:40:00 MDT") 

class(tempDateTime) 

[1] "POSIXct" "POSIXt"

Ich mag die Minuten von dem Datetime-Objekt löschen. dh haben "2017-07-13 01:00:00 MDT"

Gibt es eine einfache Möglichkeit, dies zu tun?

+1

Stehen Sie auf die nächste Stunde abrunden wollen, oder/up ausschließlich abrunden? – SymbolixAU

+0

Abschneiden, um die Anfangszeit zu erhalten. – user2946746

Antwort

8

In Basis R

trunc(tempDateTime, units = "hours") 
# "2017-07-13 01:00:00 AEST" 

Das funktioniert, weil die round Funktion in der Basis R ein Verfahren POSIX Objekte zu behandeln hat.

Von ?round.POSIXt

Rund oder Datum Zeitobjekte gestutzt.


Wie @Thelatemail weist darauf hin, das gibt ein POSIXlt Objekt, so dass Sie das Ergebnis in as.POSIXct() wieder wickeln möchten.


Noch ein Hinweis, POSIXct ist ein Objekt, das die Anzahl der Sekunden seit dem "1970-01-01 00:00:00" (die Unix-Epoche) speichert.

as.numeric(tempDateTime) 
# 1499874000 

So ist die manuelle Art und Weise zu Abrundungs ​​die Stunden wäre

as.POSIXct(floor(as.numeric(tempDateTime)/3600) * 3600, origin = "1970-01-01") 
+2

Beachten Sie, dass dies ein 'POSIXlt'-Objekt zurückgibt, kein' POSIXct'. – thelatemail

+0

Ich habe es nicht gründlich getestet, warum nicht einfach die 'trunc' in' as.POSIXct() 'umbrechen, um das ursprüngliche Format zu behalten? – thelatemail

+0

@thelatemail - ha, ja, ich überlege es! – SymbolixAU

4

Versuchen Sie folgendes:

library(lubridate) 

> floor_date(tempDateTime, "hour") 
[1] "2017-07-13 01:00:00 PDT" 
+1

s/a-Funktion/mehrere Funktionen in verschiedenen Paketen/ –

Verwandte Themen