2017-03-15 94 views
0

我有一个变量,其中包含的值约为 “时间间隔的开始时间,表示为UTC时间1970年1月1日从Unix Epoch经过的毫秒数。”(根据数据源元数据)将数字变量转换为POSIXct

这是头:

X $ timeInt [1] 1.388068e + 12 1.388075e + 12 1.388096e + 12 1.388051e + 12 1.388051e + 12 1.388072e + 12

所以我尝试将其转换为POSIXct

as.POSIXct(x$timeInt, origin = '01-01-1970',tz='UTC') 

,但我得到这个结果

[1] "43987-03-01 05:20:00 UTC" "43987-05-23 13:20:00 UTC" "43988-01-28 13:20:00 UTC" "43986-08-25 17:20:00 UTC" 
[5] "43986-08-25 17:20:00 UTC" "43987-04-25 18:40:00 UTC" 

正如你所看到的,这一年是完全错误的。我尝试使用其他格式,如“1970-01-01”,但结果是一样的。 我知道综合类数据取2013年十二月

回答

3

你要照顾,这是毫秒,因此:

x$timeInt <- x$timeInt/1000 

然后两种方法之一:

as.POSIXct(x$timeInt, origin = '1970-01-01',tz='UTC') 

library(anytime) 

anytime(x$timeInt) 

#[1] "2013-12-26 15:26:40 CET" "2013-12-26 17:23:20 CET" "2013-12-26 23:13:20 CET" "2013-12-26 10:43:20 CET" "2013-12-26 10:43:20 CET" 
#[6] "2013-12-26 16:33:20 CET" 
+0

它不起作用。与as.POSIXct(x = x $ timeInt/1000,origin = '01 -01-1970',tz ='UTC')我得到“45-01-13 14:20:00 UTC” – andriatz

+1

更改原点值。 ..它是不同于我的回答 –

+0

我随时解决它(),谢谢你 – andriatz