问题描述
我使用了这个脚本
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")