假设我有一个带有一列时间戳字符串的R data.table(data.frame),即:
"2018-10-12 12:35:37.004226",
"2018-10-12 12:35:38.00332",
"2018-10-12 12:35:39.000999",...
进行滚动连接的最佳数据类型是什么?我应该将其转换为Unix纪元时间(键入数字),还是将列保持原样(键入字符)?
我的主要目标是在不同系统上输出准确和相同。最初的想法是,由于数字不能精确表示,因此可能会产生不同的时间戳顺序(因此,跨不同系统的连接结果也不同)。
我现在开始理解,尽管R不能精确地表示一个数字,但它似乎确实将每个数字映射到整个系统中的一个唯一表示形式。
也就是说,
sprintf(“%。60f”,as.numeric(as.POSIXct(“ 2018-10-12 12:35:37.004226”,tz =“ GMT”)))
产生这种表示形式
[1] "1539347737.004225969314575195312500000000000000000000000000000000000000"
在我可以访问的四个不同系统上(取自Double precision (64-bit) representation of numeric value in R (sign, exponent, significand))。
因此,我可以肯定地说,只要一个人的时间戳所要求的精度不超过R的内部数值表示(小数点后50位数以上!),所有滚动连接都应在系统之间匹配,因为表示没有机会改变时间戳的严格顺序(从而在不同系统上产生不同的联接结果)。
因此,要在时间戳上滚动联接,请转换为数字,执行联接,并且不要回头。
对此有共识吗?