5

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

在各种工具中,一些日期/时间类表示为自纪元以来的整数(例如,R 的 POSIX 类、Python/Numpy);其他的是自纪元以来的小数天(例如,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 早期的整数存储限制吗?或者使用浮点表示还有其他优势吗?要合并,我将日期/时间对象转换为格式化的字符串,但这是规范的方式(我最常使用chronR 中的包)吗?

4

1 回答 1

3

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

于 2013-07-02T07:28:56.550 回答