Setorder使用数据表,不适用于posixct毫秒

时间:2016-07-19 14:30:56

标签: r sorting data.table posixct

我想使用setorder对数据表进行排序。

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

1 个答案:

答案 0 :(得分:3)

从帮助文件中:

  

数字类型的列(即double)在计算顺序时通过defalult舍入其最后两个字节,以避免由于精确表示浮点数的限制而导致的任何意外行为。看看setNumericRounding了解更多信息。

所以这可能是由于在分拣过程中这些列的舍入。您可以使用

将其调整为不圆
setNumericRounding(0)