as.Date不保留R中的时间

时间:2015-08-13 23:19:22

标签: r

我不明白为什么这不起作用:

as.Date('2001-10-26 10:00:00', format='%Y-%m-%d %H:%M:%S')

返回

"2001-10-26"  

但我希望它是

"2001-10-26 10:00:00"

我不需要任何复杂的事情;只是将字符串转换为带有时间戳的日期。不确定格式参数为什么不起作用。

感谢。

1 个答案:

答案 0 :(得分:4)

R有几种方式(用类表示)来处理时间和日期。在您的第一个代码中,您使用as.Date函数将其参数转换为Date类。您为该函数提供的字符串还包含不属于Date类的其他元素,因此它仅打印允许该函数处理的元素。正如您可以在文档中看到的那样:

  

...(日期)......它们总是按照当前格里高利的规则打印   日历,即使该日历很久以前没有使用过(它是   1752年在英国及其殖民地采用。)

信息基本上丢失了。 见这里:

a <- as.Date('2001-10-26 10:00:00', format='%Y-%m-%d %H:%M:%S')
format(a, format='%Y-%m-%d %H:%M:%S')
[1] "2001-10-26 00:00:00"

如果您想保留有关时间的信息,而不仅仅是您必须使用能够存储该信息的格式的日期。这些类是POSIXctPOSIXlt,其中第一个是一个巨大的整数,它计算自1970-01-01以来的秒数,第二个只是一个列表,其中每个元素存储秒,天,月等

您必须使用的函数(在基数R中)为:strptime(如@nongkrong的评论中所指出的),或as.POSIXltas.POSIXct。 其他包中还有其他函数(如chronlubridate)但是将单个包开发的特殊类放在一边(如period中的lubridate),关键类是那些我刚刚在这里进行了说明。