2014-02-26 15 views
5

Wie kann ich Millisekunden korrekt analysieren?Millisekunden in POSIXct-Klasse

as.POSIXct Funktion funktioniert wie folgt in meiner Umgebung.

 
> as.POSIXct("2014-02-24 11:30:00.001") 
[1] "2014-02-24 11:30:00.000 JST" 
> as.POSIXct("2014-02-24 11:30:00.0011") 
[1] "2014-02-24 11:30:00.001 JST" 

Meine R-Version ist x86 v3.0.2 für Windows.

Antwort

10

Geben Sie das Eingabeformat an und verwenden Sie %OS, um die Sekunden mit ihren Nachkommastellen darzustellen.

x <- c("2014-02-24 11:30:00.123", "2014-02-24 11:30:00.456") 
y <- as.POSIXct(x, format = "%Y-%m-%d %H:%M:%OS") 

Wenn Sie kommen, um den Wert anzuzeigen, eine Zahl zwischen 0 und 6 mit dem Format-String anhängen R zu sagen, wie viele Dezimalstellen von Sekunden angezeigt werden soll.

format(y, "%Y-%m-%d %H:%M:%OS6") 
## [1] "2014-02-24 11:30:00.122999" "2014-02-24 11:30:00.456000" 

(Beachten Sie, dass Rundungsfehler zu erhalten, und Datetime-Formatierungen R immer rundet nach unten, so dass, wenn Sie zeigen weniger Dezimalstellen es manchmal aussieht wie Sie eine Millisekunde verloren haben.)

Datums-Zeitformate dokumentiert auf der Hilfeseite ?strptime. Der betreffende Absatz lautet:

Specific to R is '%OSn', which for output gives the seconds 
truncated to '0 <= n <= 6' decimal places (and if '%OS' is not 
followed by a digit, it uses the setting of 
'getOption("digits.secs")', or if that is unset, 'n = 3'). 
Further, for 'strptime' '%OS' will input seconds including 
fractional seconds. Note that '%S' ignores (and not rounds) 
fractional parts on output.