代码之家  ›  专栏  ›  技术社区  ›  Fomalhaut -C

无法转换为posixct(r)

  •  0
  • Fomalhaut -C  · 技术社区  · 7 年前

    给定类数据框架的数据集“欧元兑美元”:

         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——一切都是不存在的:

    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 回复  |  直到 7 年前
        1
  •  2
  •   Rich Scriven    7 年前

    你应该使用 %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
  •  1
  •   Dirk is no longer here    7 年前

    @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>   
    
    推荐文章