2015-05-19 25 views
2

我已經下載了一些氣候再分析數據,花了很多時間從grib轉換爲cdf,最後現在我設法使它在R中工作。下一期我是那個時候是一個字符向量,類似以下內容:轉換字符串沒有正確的格式posixct

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") 

,其中前四位是一年,其次是月,日,最後一天的分數:年月日...

如何將其轉換爲格式爲yyyy-mm-dd的posixct時間HH:MM?

我會嘗試

as.POSIXct(TT, '%Y%M%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" 

任何人都可以提出一個解決辦法?

注:我可以得到一半的方式與

as.Date(tt, "%Y%m%d") 

但不知道做什麼用分數

回答

5

與開始:

tt=c("20090101" , "20090101.25" ,"20090101.5" , "20090101.75" ,"20090102") 

轉換日期部分,然後提取小數部分並以秒爲單位添加一天中的一小部分:

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" 
+0

因此,實際上用'format =「%Y%m%d」'告訴R只輸入輸入的第一個3「元素」並忽略其餘部分。我對嗎? – SabDeM

+1

我這麼認爲,而'as.POSIXct(「20010102!^£%!」,format =「%Y%m%d」)似乎同意。 – Spacedman

相關問題