2016-07-19 14 views
0

Ich möchte meine Datentabelle nach Zeit mit Setorder sortieren.Setorder mit Datentabelle, funktioniert nicht für Posixct Millisekunden

library(data.table) 
DT <- data.table(timestamp=c(as.POSIXct("2013-01-01 17:54:23.577"), 
          as.POSIXct("2013-01-01 17:54:23.568"), 
          as.POSIXct("2013-01-01 17:54:23.909"), 
          as.POSIXct("2013-01-01 17:54:23.901"))) 
setorder(DT,timestamp) 
print(DT) 

Ausgänge:

    timestamp 
1: 2013-01-01 17:54:23.568 
2: 2013-01-01 17:54:23.576 
3: 2013-01-01 17:54:23.908 
4: 2013-01-01 17:54:23.901 

setOrder nicht ordnungsgemäß die Datentabelle zu sortieren, und ich bin nicht sicher, warum. Ist es möglich, die Empfindlichkeit oder irgendeine andere mögliche Lösung irgendwie zu erhöhen?

+3

mit Q ist anders, aber Antwort ist das gleiche, wie [hier] gezeigt (http://stackoverflow.com/a/37946500/559784). Der Plan ist, ab der nächsten Version standardmäßig nicht zu runden. – Arun

Antwort

3

aus der Hilfedatei:

Spalten von numerischen Typen (dh doppelt) haben ihre letzten beiden Bytes abgerundet, während um die Berechnung von defalult, aufgrund von Einschränkungen unerwartetes Verhalten zu vermeiden Gleitkomma in der Vertretung Zahlen genau. Werfen Sie einen Blick auf setNumericRounding, um mehr zu erfahren.

Dies ist wahrscheinlich auf die Rundung dieser Spalten während des Sortierprozesses zurückzuführen. Sie können diese anpassen, um nicht rund

setNumericRounding(0) 
+0

Danke. Dies löst das Problem. – johnblund