相当直接,我通常不会涉足R.当通常的技巧似乎不起作用时,让它变得有点挑衅。
我理解strftime
是日期时间解析器,所以我试着没有运气,假设它的格式应该受到责备。
datetime <- strftime(dat24$DateAndTime, tz="GMT", format="%d%m%Y%H%M%S")
print(head(datetime))
Output >> [1] NA NA NA NA NA NA
我尝试了as.POSIXct
,它产生了一个结果,但结果非常错误。再次,我猜测它的缺失格式,也许是原点。
datetime <-as.POSIXct(dat24$DateAndTime, origin = "1970-01-01 01:01.01", tz = "GMT")
print(head(dat24$DateAndTime))
Output >> [1] 240515055655 240515055757 240515055857 240515055958 240515060058 240515060200
print(head(datetime))
Output >> [1] "9591-08-15 02:41:55 GMT" "9591-08-15 02:43:37 GMT" "9591-08-15 02:45:17 GMT" "9591-08-15 02:46:58 GMT" "9591-08-15 03:55:18 GMT" "9591-08-15 03:57:40 GMT"
所以问题很简单,我如何转换这个列表?
答案 0 :(得分:1)
把它写成答案......
您可以使用来自lubridate的dmy_hms
:
library(lubridate)
dts <- sprintf('%02d%02d%02d%02d%02d%02d',sample(1:28,10,T),sample(1:12,10,T),sample(2010:2018,10,T),sample(0:23,10,T),sample(0:59,10,T),sample(0:59,10,T))
dts[1]
# [1] "27022016185346"
dmy_hms(dts)
# [1] "2016-02-27 18:53:46 UTC" "2016-05-05 07:13:08 UTC" "2016-01-27 08:34:16 UTC" "2017-02-19 15:11:15 UTC"
# [5] "2016-09-01 20:59:21 UTC" "2012-03-12 01:30:15 UTC" "2014-12-06 06:49:51 UTC" "2016-01-18 17:38:44 UTC"
# [9] "2010-12-26 01:51:51 UTC" "2010-06-17 08:41:44 UTC"