r as.POSIXct获得NA

时间:2015-08-04 22:04:28

标签: r time na

为什么在使用as.POSIXct转换下面的时间戳时会获得所有NA?

> head(tmp$timestamp_utc)
[1] Fri Jul 03 00:15:00 EDT 2015 Fri Jul 03 00:45:00 EDT 2015 Fri Jul 03 01:15:00 EDT 2015 Fri Jul 03 01:45:00 EDT 2015 Fri Jul 03 02:15:00 EDT 2015
[6] Fri Jul 03 02:45:00 EDT 2015
> tmp$timestamp_utc<- as.POSIXct(tmp$timestamp_utc, "%m/%d/%Y %H:%M:%S", tz="GMT")
> head(tmp$timestamp_utc)
[1] NA NA NA NA NA NA

更新:         最初的问题是格式错误,下面的一些朋友指出。正确的格式不会生成NA         然后我发现EDT没有转换为GMT,尽管&#34; GMT&#34;在as.POSIXCT中添加。使用with_tz解决了这个问题。

> as.POSIXct("Fri Jul 03 00:15:00 EDT 2015", format="%a %b %d %H:%M:%S EDT %Y", tz="GMT")
[1] "2015-07-03 00:15:00 GMT"
> with_tz(as.POSIXct("Fri Jul 03 00:15:00 EDT 2015", format="%a %b %d %H:%M:%S EDT %Y"),"GMT")
[1] "2015-07-03 04:15:00 GMT"

1 个答案:

答案 0 :(得分:4)

我相信这是你想要的格式:

as.POSIXct("Fri Jul 03 00:15:00 EDT 2015", format="%a %b %d %H:%M:%S EDT %Y", tz="GMT")

任何回答您的具体问题,并回应评论,它没有奏效,因为您的格式参数没有正确指定。

编辑:这有点超出最初提出的问题,但您可以根据更改时区转换时间,如下所示(支持问题here):

time <- "Fri Jul 03 00:15:00 EDT 2015"
format1 <- "%a %b %d %H:%M:%S EDT %Y"
time2 <- as.POSIXct(time, format=format1, tz="EST")
attr(time2, "tzone") <- "GMT"
time2
[1] "2015-07-03 05:15:00 GMT"