将数字(integer64类)UNIX时间戳转换为日期时间类

将数字(integer64类)UNIX时间戳转换为日期时间类,r,dataframe,datetime,unix-timestamp,integer64,R,Dataframe,Datetime,Unix Timestamp,Integer64,到处都有类似的问答,但都没有帮助我克服以下错误 (我正在尝试将unix时间转换为日期时间格式): 编辑2: @zx8754非常感谢您更改标题,从而指出了真正的问题-unix时间戳以毫秒为单位,因此转换为较大的时间戳。问题在于您的数据具有来自位64包的类integer64。加载位64包时,需要使用as.integer()将其转换为普通整数。然后可以在其上使用as.POSIXct() 但是,您可能应该首先了解如何导入数据以及为什么以这种方式保存数据。它是否需要是64位整数?能否添加dput(head

到处都有类似的问答,但都没有帮助我克服以下错误 (我正在尝试将unix时间转换为日期时间格式):

编辑2:


@zx8754非常感谢您更改标题,从而指出了真正的问题-unix时间戳以毫秒为单位,因此转换为较大的时间戳。

问题在于您的数据具有来自
位64
包的类
integer64
。加载
位64
包时,需要使用
as.integer()
将其转换为普通整数。然后可以在其上使用
as.POSIXct()


但是,您可能应该首先了解如何导入数据以及为什么以这种方式保存数据。它是否需要是64位整数?

能否添加
dput(head(cur196$time))
?是否可能重复确定,它可能是的重复。但是,我不知道如何使建议的解决方案适应我的示例。很高兴提供帮助。请从您的问题中删除“解决方案”,并将其作为以下答案发布:
“您的答案”
。顺便说一句,您的解决方案不适用于问题中提供的dput示例数据。正确!当我意识到我的数据是以毫秒为单位时,我还发现它们必须除以1000(似乎这会自动创建正常整数)。像这样:cur196$次
> cur196$time
integer64
  [1] 1566204590000 1566204585000 1566204580000 1566204570000 1566204560000 1566204550000 1566204531000 1566204525000 1566204521000 1566204501000
 [11] 1566204495000 1566204491000 1566204481000 1566204464000 1566204461000 1566204451000 1566204441000 1566204434000 1566204431000 1566204420000
 [21] ...
>   cur196$time <- as.POSIXct(cur196$time, origin = "1970-01-01", tz = "GMT")
Error in as.POSIXct.default(cur196$time, origin = "1970-01-01", tz = "GMT") : 
  do not know how to convert 'cur196$time' to class “POSIXct”
> dput(head(cur196$time))
structure(c(7.73807882277875e-312, 7.73807879807547e-312, 7.73807877337218e-312, 
7.73807872396562e-312, 7.73807867455905e-312, 7.73807862515249e-312
), class = "integer64")