将数字变量转换为 POSIXct

convert numeric variable into POSIXct

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

这是头:

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”,但结果是一样的。 我知道a数据是2013年12月取的。

你必须小心,这是以毫秒为单位的,所以:

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"