将没有正确格式的字符串转换为posixct

Emm*_*bbs 2 r posixct

我已经下载了一些气候再分析数据,花了很多时间从grib转换为cdf,最后我已经设法让它在R中工作.我的下一个问题是时间是一个字符向量,类似于下列:

tt =c(
    "20090101","20090101.25","20090101.5","20090101.75","20090102",
    "20090102.25","20090102.5","20090102.75","20090103","20090103.25",
    "20090103.5","20090103.75","20090104","20090104.25","20090104.5", 
    "20090104.75")
Run Code Online (Sandbox Code Playgroud)

前四位数是年份,后面是月份,然后是白天,最后是一天中的一小部分:yyyymmdd ...

如何用格式yyyy-mm-dd HH:MM将其转换为posixct时间?

我会尝试

as.POSIXct(TT, '%Y%米%d')

但由于日间分数,这在这里不会有所帮助.

最终结果应该是:

    tt
       [1] "2009-01-01 00:00"    "2009-01-01 06:00" "2009-01-01 12:00"  
"2009-01-01 18:00" "2009-01-02 00:00"   
Run Code Online (Sandbox Code Playgroud)

谁有人建议解决方案?

注意:我可以用一半的方式

as.Date(tt, "%Y%m%d")
Run Code Online (Sandbox Code Playgroud)

但不知道如何处理分数

Spa*_*man 5

从...开始:

tt=c("20090101"  ,  "20090101.25" ,"20090101.5" , "20090101.75" ,"20090102")
Run Code Online (Sandbox Code Playgroud)

转换日期部分,然后提取小数部分,并以秒为单位添加一天:

as.POSIXct(tt,format="%Y%m%d") + (as.numeric(tt) - as.integer(tt))*(60*60*24)
[1] "2009-01-01 00:00:00 GMT" "2009-01-01 06:00:00 GMT"
[3] "2009-01-01 12:00:00 GMT" "2009-01-01 18:00:00 GMT"
[5] "2009-01-02 00:00:00 GMT"
Run Code Online (Sandbox Code Playgroud)