2016-05-12 145 views
0

我正試圖計算現在和存儲在x中的開始時間。用R中的時間差計算

> x 
[1] 2016-06-11T13:00Z 2016-06-11T19:00Z 2016-06-10T19:00Z 2016-06-11T16:00Z 

當我現在嘗試

> difftime(Sys.time(), x, units="hours") 
Time differences in hours 
[1] -696.0873 -696.0873 -672.0873 -696.0873 

計算只考慮天數,並用24乘以我現在需要和事件開始之間的時間確切數額。

是否有人可以幫助..

+3

那些看起來像來自xts對象的索引,因此實際上是文本。你應該發佈'dput(x)' –

回答

0

的時間差可以通過-功能可以直接計算出它返回的區別,您可以通過3600轉換爲小時分割作爲一個演示:

> time1 <- Sys.time() 
> time1 
[1] "2016-05-12 22:23:58 EDT" 
> time2 <- Sys.time() 
> time2 
[1] "2016-05-12 22:24:16 EDT" 
> time2 - time1 
Time difference of 17.79894 secs 
> as.numeric(time2 - time1)/3600 
[1] 0.004944149 

因此對於你的情況,as.numeric(x - Sys.time())/3600應該爲你做這項工作。只要你想要它到特定的數字。

+0

嗨, 感謝您的回覆。我仍然有相同數量的小時。 > as.numeric(x-Sys.time())/ 3600 [1] -406424.2 -406424.2 -406424.2 -406424.2 小時數也很奇怪。它應該大約是700個小時。我需要在x時間更改格式嗎? – samot79

+0

你的時間很可能是格式不正確。 〜40600小時是開始時間的經過時間:1970年1月1日。請使用「dput」命令提供數據樣本來編輯您的問題,以便我們確切知道您的數據是什麼。 – Dave2e

+0

嘗試使用'as.numeric(as.POSIXct(x) - Sys.time())/ 3600'來首先將x轉換爲日期時間對象。 – Psidom