将数字变量转换为POSIXct

时间:2017-03-15 18:01:47

标签: r posixct

我有一个包含值的变量 "时间间隔的开始,表示为从1970年1月1日在UTC的Unix纪元开始经过的毫秒数。" (根据数据源元数据)

这是头脑:

  

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年12月拍摄的。

1 个答案:

答案 0 :(得分: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"