我有一个 csv 文件,其中包含一列时间戳“2000-01-01 12:00:00.123456”。在数据表中处理它的推荐方法是什么?我需要处理分组、匹配/滚动连接与另一个表中的 IDate 列、时间序列绘图等。
IDateTime("2000-01-01 12:00:00.123456")
Error in if (any(neg)) res[neg] = paste("-", res[neg], sep = "") :
missing value where TRUE/FALSE needed
我在可能的 duplicate 问题中看到了这个答案,其中马修建议将日期手动转换为整数。但那是 3 岁了,我想知道现在是否存在更好的方法?
最佳答案
IDateTime
需要一个 POSIXct
类对象才能正常工作(它似乎也可以通过 factor
转换正常工作,不知道为什么)。我同意它没有很好的记录,也许值得在 GH 上打开一个关于文档的 FR/PR——虽然有一个关于 IDateTime
vignette 的开放队列。并且已经有一个 FR 允许它与 character
类一起工作。
IDateTime(as.POSIXct("2000-01-01 12:00:00.123456"))
# idate itime
# 1: 2000-01-01 12:00:00
## IDateTime(factor("2000-01-01 12:00:00.123456")) ## will also work
如果要避免意外行为,请注意
tz
中的 as.POSIXct
参数无论如何,似乎错误实际上是由调用
ITime
的 format.ITime
的打印方法引起的,请参阅 here 和 here例如,如果您将运行
res <- IDateTime("2015-09-29 08:22:00")
这将不会产生错误,尽管 res
将是 NA
由于 here 中的错误转换(我相信)(格式仅为 "%H:%M:%OS"
)。这对我来说似乎是一个错误,当 factor
中没有 factor
方法时,我仍然不确定为什么 methods(as.ITime)
类可以正常工作。可能是因为它的 integer
内部存储模式调用了另一个相关的方法。
关于R数据表推荐的处理日期时间的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33064015/