给定数据集" eur_usd" class data.frame:
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
我做错了吗?
答案 0 :(得分:2)
您应该使用%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"
答案 1 :(得分:1)
@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>