使用适合数值计算的日期/时间类,也可以作为合并的关键

时间:2013-07-02 06:55:37

标签: r datetime

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

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

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

这更像是一个概念性的问题,但是有充分的理由使用小数天或花车进行时间表示吗?对于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包)?

1 个答案:

答案 0 :(得分:3)

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