将r转换为POSIXct格式时出现NA。

3
当使用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

更新: 1. 最初的问题是格式错误,被下面一些朋友指出。正确的格式不会生成NA。 2. 然后我发现EDT没有转换为GMT,虽然在as.POSIXCT中添加了"GMT"。使用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"

4
由于您没有指定正确的日期格式,因此出现了“NA”的结果。例如,您的数据中没有任何“/”符号。 - csgillespie
是的,这就是问题。 - user1047
1个回答

5
我相信这是你想要的格式: as.POSIXct("Fri Jul 03 00:15:00 EDT 2015", format="%a %b %d %H:%M:%S EDT %Y", tz="GMT") 为了回答你的具体问题并重申评论,它没有起作用是因为你的格式参数没有正确指定。
编辑:这有点超出了最初提出的问题,但你可以通过以下方式根据不同的时区转换时间(支持问题这里):
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"

它有效。谢谢。我在想用于输出格式的格式是什么。 - user1047
@user1047 我在这里提出了一个相关的后续问题(https://dev59.com/HY3da4cB1Zd3GeqP4MCT) - rbatt
顺便问一下,为什么代码没有显示出GMT时间?"Fri Jul 03 00:15:00 EDT 2015"应该是"2015-07-03 04:15:00 GMT"。但是,as.POSIXct("Fri Jul 03 00:15:00 EDT 2015", format="%a %b %d %H:%M:%S EDT %Y", tz="GMT")得到的是"2015-07-03 00:15:00 GMT",还是比GMT时间慢4个小时。 - user1047

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接