我不明白为什么这不起作用:
as.Date('2001-10-26 10:00:00', format='%Y-%m-%d %H:%M:%S')
返回
"2001-10-26"
但我希望它是
"2001-10-26 10:00:00"
。
我不需要任何复杂的事情;只是将字符串转换为带有时间戳的日期。不确定格式参数为什么不起作用。
感谢。
答案 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"
如果您想保留有关时间的信息,而不仅仅是您必须使用能够存储该信息的格式的日期。这些类是POSIXct
和POSIXlt
,其中第一个是一个巨大的整数,它计算自1970-01-01以来的秒数,第二个只是一个列表,其中每个元素存储秒,天,月等
您必须使用的函数(在基数R中)为:strptime
(如@nongkrong的评论中所指出的),或as.POSIXlt
或as.POSIXct
。
其他包中还有其他函数(如chron
和lubridate
)但是将单个包开发的特殊类放在一边(如period
中的lubridate
),关键类是那些我刚刚在这里进行了说明。