【发布时间】:2013-11-03 19:02:05
【问题描述】:
我想将存储为字符的日期时间转换为日期时间对象。 但是,如果日期时间包括午夜,则生成的日期时间对象不包括时间组件,然后在稍后的函数中使用时会引发错误(此处不需要 - 但一个用于提取指定位置和日期时间的天气数据的函数)。
示例代码:
example.dates <- c("2011-11-02 00:31:00","2011-11-02 00:00:00","2011-11-02 00:20:22")
posix.dates <- as.POSIXct(example.dates, tz="GMT", format="%Y-%m-%d %H:%M:%S")
posix.dates
posix.dates[2]
仅当包含午夜的日期时间被单独调用(原子向量)时,才排除 NB 次。
有没有办法保留午夜时间的时间数据?你能推荐一个替代功能吗?
【问题讨论】:
-
时间信息有,只是没有显示。我有点惊讶这会导致稍后出现错误。也许问题出在您以后的功能上。你能告诉我们那个代码吗? (作为可用的证明,请参阅
format(posix.dates, '%Y-%m-%d %M:%H') -
谢谢@Thilo。我想在 R 包“RNCEP”中使用函数“NCEP.interp”。查看该函数的源代码,错误来自以下代码行,它返回 NA:strptime(posix.dates[2], "%Y-%m-%d %H:%M:%S" ,'UTC') 考虑到我已经在使用 datetime 对象,这不应该是必要的,但这就是函数的编写方式。
-
我担心你的错误在其他地方。如果我运行
strptime(posix.dates, "%Y-%m-%d %H:%M:%S",'UTC'),结果很好并且符合预期。实际的错误信息是什么? -
如果你在单个值上运行它,而不是整个向量:strptime(posix.dates[2], "%Y-%m-%d %H:%M:%S" ,'UTC') 没有错误信息,但是返回'NA',在后面的函数中使用会报错。
-
我建议不要在
POSIXct值上使用strptime。如果要转换为POSIXlt,as.POSIXlt更好。如果你想使用strptime,那么先自己转换成character:strptime(format(posix.dates[2], "%Y-%m-%d %H:%M:%S"), "%Y-%m-%d %H:%M:%S", "UTC")