2009-12-25 19 views
45

Ich habe mehrere Listen von Messungen. In jeder Liste ist der Zeitstring als String formatiert ("2009-12-24 21: 00: 07.0") und ich weiß, dass jede Messung in der Liste durch 5 Sekunden getrennt ist. Ich möchte alle Daten in einem riesigen dat.frame in R kombinieren. Danach möchte ich in der Lage sein, einfach auf den Zeitunterschied von zwei Messungen zuzugreifen, also sollte ich wahrscheinlich Daten in etwas anderes als Zeichen konvertieren.Umgang mit Zeitstempeln in R

Welches Format sollte ich verwenden, um die Zeiten zu speichern? Gibt es ein Zeitformat in einem Paket, das ich verwenden sollte?

Antwort

58

Sie wollen den (Standard) POSIXt Typ von Basis R, der als POSIXct in ‚kompakter Form‘ werden mußte kann (die im wesentlichen eine Doppel seit der Epoche darstellt Sekundenbruchteile) oder als Langform in POSIXlt (die Unter enthält Elemente). Die kühle Sache ist, dass Arithmetik usw. sind auf diese definiert - help(DateTimeClasses)

Schnell Beispiel siehe:

R> now <- Sys.time() 
R> now 
[1] "2009-12-25 18:39:11 CST" 
R> as.numeric(now) 
[1] 1.262e+09 
R> now + 10 # adds 10 seconds 
[1] "2009-12-25 18:39:21 CST" 
R> as.POSIXlt(now) 
[1] "2009-12-25 18:39:11 CST" 
R> str(as.POSIXlt(now)) 
POSIXlt[1:9], format: "2009-12-25 18:39:11" 
R> unclass(as.POSIXlt(now)) 
$sec 
[1] 11.79 

$min 
[1] 39 

$hour 
[1] 18 

$mday 
[1] 25 

$mon 
[1] 11 

$year 
[1] 109 

$wday 
[1] 5 

$yday 
[1] 358 

$isdst 
[1] 0 

attr(,"tzone") 
[1] "America/Chicago" "CST"    "CDT"    
R> 

Was sie beim Lesen help(strptime)

Was Unterschied, leicht sehen:

Schließlich ist der zoo package ein extrem vielseitiger und gut dokumentierter Container für Matrix mit zugehörigem Datum/Zeit e Indizes.

+13

Danke. Die Leute, die die Namen für R-Funktionen gemacht haben, sind grausam. Ich meine, wie soll man vermuten, dass POSIXlt etwas mit Zeit zu tun hat? – Christian

+6

Aber 'help.search (" date time ")' hätte Nachbarfunktionen entdeckt. –

+3

@DirkEddelbuettel ja, und das ist hilfreich. Jedenfalls ist das keine Entschuldigung für schlechte Benennung. Je besser der Code lesbar ist, ohne dass Dokumentation benötigt wird, desto besser. – nandinga