【问题标题】:as_datetime() Error: All formats failed to parseas_datetime() 错误:所有格式都无法解析
【发布时间】:2019-07-13 14:01:20
【问题描述】:

为什么 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 date time paste


    【解决方案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"
    

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

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

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

    【讨论】:

      【解决方案2】:

      由于您已经在使用 lubridate,您只需在之前设置 hm 将日期对象 dmy 添加到时间对象(小时:分钟)。

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

      见:R tick data : merging date and time into a single object

      【讨论】:

      • 您好@tdel,感谢您的解决方案。我在数据帧上使用了这种方法,它可以解析两列,但是在时间为零的行(例如 00:34)处失败。知道为什么吗?
      猜你喜欢
      • 2020-04-11
      • 1970-01-01
      • 2019-01-11
      • 1970-01-01
      • 1970-01-01
      • 2022-11-16
      • 2019-04-25
      • 2017-01-10
      • 1970-01-01
      相关资源
      最近更新 更多