2016-07-19 16 views
0

我想使用setorder后排序我的数据表。Setorder使用数据表,不工作posixct毫秒

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) 

输出:

    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未能正确排序的数据表,我不知道为什么。是否有可能以某种方式提高灵敏度或任何其他可能的解决方案?

+3

Q是不同的,但答案是相同的,如[这里](http://stackoverflow.com/a/37946500/559784)所示。该计划不会默认从下一个版本开始。 – Arun

回答

3

从帮助文件:数字类型(即双)有其最后的两个字节四舍五入而计算顺序,由defalult,以避免任何意外行为由于限制

列在代表浮点数字精确。查看setNumericRounding以了解更多信息。

所以这可能是由于这些列在整理过程中四舍五入。你可以调整这个不轮回使用

setNumericRounding(0) 
+0

谢谢。这解决了这个问题。 – johnblund