r-使用一个适用于数值计算的日期/时间类,也用作合并的键



我正在处理一些昼夜时间序列,其中时间必须表示为分钟。

在各种工具中,一些日期/时间类被表示为自epoch以来的整数(例如,R的POSIX类、Python/Numpy);其他是自epoch以来的分数天(例如,R的chron包,也是Matlab)。

整数表示法似乎允许您执行数值计算(和、差),但也提供了一种通过它们进行合并/匹配的方法,而对于以小数天数(浮点数)表示的整数表示法,则更难通过时间进行合并/匹配。

这更多的是一个概念性的问题,但使用分数天数或浮动时间表示有充分的理由吗?对于R来说,奇怪的是,即使是POSIX类也是数字而不是整数。

> (p <- as.POSIXct("2011-01-01"))
[1] "2011-01-01 CST"
> (unclass(p <- as.POSIXct("2011-01-01")))
[1] 1293861600
attr(,"tzone")
[1] ""
> class(unclass(p <- as.POSIXct("2011-01-01")))
[1] "numeric"

这是因为R早期的整数存储限制吗?或者使用浮点表示还有其他优点吗?为了合并,我将日期/时间对象转换为格式化字符串,但这是规范的方式吗(我最常使用R中的chron包)?

POSIXct是数字型的,因为它提供53位精度,而不是32位的4字节整数。上世纪后半叶,R主要在32位平台上开发,使用整数会使其容易受到2038年问题的影响。现在有了64位int,这将是一个更好的选择,但我们现在只能使用53位。在约285420000年,当这将是一个问题时,我们可以重新访问它。

最新更新