首页 文章

无法转换为POSIXct(R)

提问于
浏览
0

给定类data.frame的数据集“eur_usd”:

pair                    dt     bid     ask
1 EUR/USD 20180401 21:02:24.820 1.23178 1.23286
2 EUR/USD 20180401 21:02:25.304 1.23156 1.23285
3 EUR/USD 20180401 21:02:25.358 1.23155 1.23285

> class(eur_usd$dt)
[1] "character"

我不能强迫$ dt到POSIXct - 一切都只是NA:

strptime(eur_usd$dt, "%Y%m%d %H:%M:%S.%f")
   [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA
  [36] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA

as.POSIXct(eur_usd$dt, format = "%Y%m%d %H:%M:%S.%f", tz = "GMT")
   [1] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA

难道我做错了什么?

2 回答

  • 1

    你应该使用 %OS 毫秒

    as.POSIXct(df$dt, format = "%Y%m%d %H:%M:%OS")
    # [1] "2018-04-01 21:02:24 PDT" "2018-04-01 21:02:25 PDT" 
    # [3] "2018-04-01 21:02:25 PDT"
    
  • 2

    @Rich向您展示了在使用需要格式的转换器时如何正确指定所需的格式 .

    或者,您可以使用不需要格式说明符的anytime包(但尝试尝试许多合理的替代方案):

    R> anytime::anytime(c("20180401 21:02:24.820", "20180401 21:02:25.304",
    +                   "20180401 21:02:25.358"))
    [1] "2018-04-01 21:02:24.819 CDT" "2018-04-01 21:02:25.303 CDT" 
    [3] "2018-04-01 21:02:25.358 CDT"     
    R>
    

相关问题