如何使用R将数字转换为时间戳

问题描述

我使用了这个脚本

 df?timestamp< as.POSIXct(df$timestamp,tz="",format="%Y%m%d%H%M%s",origin = "1970-01-01")

然后我得到NA。

我的电话号码是43466.10,我应该得到的结果是2019-01-01 02:17:26。

我该怎么办?

解决方法

实际上,43466.10不是有效的Unix时代。有关更多信息,请参见https://en.wikipedia.org/wiki/Unix_time

此数字看起来像一个Excel日期/时间值。如果确实如此,那么“ 2019-01-01 02:17:26”实际上是43466.0954398148,您应该使用的来源是“ 1899-12-30”,而不是“ 1970-01-01”。

在这种情况下,您不能直接使用as.POSIXct,因为UNIX纪元时间是在计数,而Excel日期/时间值是在计数

您可以使用软件包openxlsx进行此转换。试试这个:

# install.packages("openxlsx")
df$timestamp <- openxlsx::convertToDateTime(df$timestamp,origin = "1899-12-30")