R数据表推荐的方式来处理日期时间

jf3*_*328 6 datetime r data.table

我有一个带有一列时间戳"2000-01-01 12:00:00.123456"的csv文件.在数据表中处理它的推荐方法是什么?我需要处理分组,匹配/滚动连接与另一个表中的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
Run Code Online (Sandbox Code Playgroud)

我在可能的重复问题中看到了这个答案,其中Matthew建议手动将日期转换为整数.但那已经3岁了,我想知道现在是否有更好的方法?

Dav*_*urg 8

IDateTime需要一个POSIXct类对象才能正常工作(它似乎也适用于factor转换,不知道为什么).我同意它没有很好地记录,并且可能值得在GH上打开FR/PR关于文档 - 尽管有关于IDateTime 插图的开放队列.并且已经存在关于允许它与班级一起工作的FRcharacter.

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
Run Code Online (Sandbox Code Playgroud)

如果要避免意外行为,请注意tz参数as.POSIXct


无论如何,这似乎是错误实际上是由印刷方法所造成的ITime它调用format.ITime,见这里和这里 例如,如果你将运行res <- IDateTime("2015-09-29 08:22:00")这个会不会产生一个错误,但res会NA由于错误的转换(我相信)在这里(该格式是唯一的"%H:%M:%OS").对我来说这似乎是一个错误,我仍然不确定为什么factor当没有factor方法时类正常工作methods(as.ITime).可能是由于其integer内部存储模式调用了另一种相关方法.