【发布时间】:2021-07-09 22:17:12
【问题描述】:
这听起来像是一个重复的问题,但我经历了许多与 POSIxct 相关的错误,但没有遇到过这个问题。如果您仍然找到一个,我将非常感谢您指出这个方向。 as.POSIXct 在我的情况下表现得非常尴尬。请看下面的例子:
options(digits.secs = 3)
test_time <- "2017-01-26 23:00:00.010"
test_time <- as.POSIXct(test_time, format = "%Y-%m-%d %H:%M:%OS")
这会返回:
"2017-01-26 23:00:00.00"
现在,我尝试以下选项并返回 NA。我不知道为什么当我需要它转换为“2017-01-26 23:00:00.010”时会出现这种行为。
test_time <- "2017-01-26 23:00:00.010"
test_time <- as.POSIXct(test_time, format = "%Y-%m-%d %H:%M:%OS3")
现在我这样做时效果很好:
as.POSIXlt(strptime(test_time,format = "%Y-%m-%d %H:%M:%OS"), format = "%Y-%m-%d %H:%M:%OS")
但出于我的目的,我需要将其作为 POSIXct 对象,因为我正在使用的某些库仅使用 POSIXct 对象。再次将 POSIXlt 转换为 POSIXct 会导致与以前相同的问题。 我的系统设置有问题吗?该日期也不是那些引发错误的夏令时之一。为什么它适用于一种格式而不适用于其他格式?欢迎任何线索/建议!
在 64 位 Windows 10 上运行
【问题讨论】:
-
正如帮助页面所说,它是特定于操作系统的,也许您的操作系统不支持亚秒级精度。 (我的没有。)
-
这可能是真的。但是为什么 00.020 会变成 00.010?
-
如果您发布了这样的代码,那么我们很乐意阅读它。您还应该发布您的操作系统详细信息,因为这是一个关于被记录为操作系统特定的方面的问题。
-
%OSn仅用于格式化输出。它不适用于解析输入。额外的数据在那里,但默认情况下只是四舍五入。由于浮点数学,该值无法准确表示:strftime(as.POSIXct(test_time, format = "%Y-%m-%d %H:%M:%OS"), "%Y-%m-%d %H:%M:%OS3") -
您是否尝试过在您正在使用的函数/库中使用
test_time(test_time <- as.POSIXct(test_time, format = "%Y-%m-%d %H:%M:%OS"))?