as_datetime() 错误:所有格式都无法解析

as_datetime() Error: All formats failed to parse

提问人:Andrea 提问时间:7/13/2019 更新时间:7/13/2019 访问量:1746

问:

为什么在下面的例子中,as_datetime() 会导致 NA?

x <- dmy("1-1-2000")
y <- "14:30"
as_datetime(paste(x, y))

错误:

[NA]
Warning message:
All formats failed to parse. No formats found.

谢谢

r 日期 时间 粘贴

评论


答:

4赞 akrun 7/13/2019 #1

我们可以使用参数format

library(lubridate)
as_datetime(paste(x, y), format = "%Y-%m-%d %H:%M")
#[1] "2000-01-01 14:30:00 UTC"

或者另一种选择是anytime

library(anytime)
anytime(paste(x, y))
#[1] "2000-01-01 14:30:00 EST"

原因可能是它期望时间采用格式,而“y”不是。如果我们用完整格式代替(也可以判断为%H:%M:%S%H:%M%M:%S)

y1 <- "14:30:00"
as_datetime(paste(x, y1))
#[1] "2000-01-01 14:30:00 UTC"

注意:这回答了 OP 收到警告消息的原因。

3赞 tom 7/13/2019 #2

由于您已经在使用润滑剂,因此您只需通过设置之前将日期对象添加到时间对象(小时:分钟)中即可。dmyhm

x <- dmy("1-1-2000") 
y <- "14:30" 
z <- x + hm(y) 

请参见:R tick 数据:将日期和时间合并到单个对象中

评论

0赞 Andrea 7/13/2019
您好@tdel,感谢您的解决方案。我在数据帧上使用了这种方法,它适用于解析两列,但是它在时间为零小时的行(例如 00:34)处失败。知道为什么吗?