2014-07-01 138 views
2

我有一個數據框包含什麼應該是一個已讀入R的日期時間列。時間值顯示爲數值時間,如下面的數據示例中所示。我想將它們轉換爲datetime POSIXct或POSIXlt格式,以便查看日期和時間。R轉換數字時間到日期時間POSIXct格式

tdat <- c(974424L, 974430L, 974436L, 974442L, 974448L, 974454L, 974460L, 974466L, 974472L, 
      974478L, 974484L, 974490L, 974496L, 974502L, 974508L, 974514L, 974520L, 974526L, 
      974532L,974538L) 

974424應該等同於00:00:00 01/03/2011,但不知道該數值的起源時間(即1970-01-01以下使用不工作)。我試圖使用下面的命令來實現這一點,並花了一些時間試圖讓as.POXISct工作,但我還沒有找到一個解決方案(即我最終得到NISA的POSIXct對象或結束了模糊的日期時間值)。

嘗試數字時間轉換爲日期時間:

datetime <- as.POSIXct(strptime(time, format = "%d/%m/%Y %H:%M:%S")) 
datetime <- as.POSIXct(as.numeric(time), origin='1970-01-01') 

我相信,這是一個簡單的事情。任何幫助都會得到很大的迴應。謝謝!

+1

以小時,分鐘或秒這些時間值?如果你不知道起源時間,你必須知道這一點,才能進行轉換。 –

+0

@ Theodore:他們應該在幾小時內。日期時間值應該如此運行00:00:00 01/03/2011,06:00:00 01/03/2011,12:00:00 01/03/2011,18:00:00 01/03/2011 ,02/03/2011的00:00:00等等(每隔6小時)。 – jjulip

回答

4

嘗試這些取決於哪個時區您希望之一:

t.gmt <- as.POSIXct(3600 * (tdat - 974424), origin = '2011-03-01', tz = "GMT") 

t.local <- as.POSIXct(format(t.gmt)) 
+0

謝謝。日期時間值應該從00:00:00 01/03/2011以6小時爲間隔運行,即06:00:00 01/03/2011,12:00:00 01/03/2011,18:00:00 01/03/2011,02/03/2011,00:00:00等。我將如何適應上面的代碼來實現這一目標?目前它以分鐘而不是小時爲間隔:即「2011-01-03 00:00:00 GMT」「2011-01-03 00:00:06 GMT」「2011-01-03 00:00:12 GMT 」。謝謝! – jjulip

+1

@jjulip如果'tdat'在6小時內,那麼在第一行中''tday-974424'乘以'60 * 6'來轉換爲分鐘。 –

+0

@jjulip,請參閱修訂後的答案。 –