【发布时间】:2018-02-11 01:23:09
【问题描述】:
尝试将一整列的 Unix 转换为 R 中的日期时间。我已经能够使用
as.POSIXlt(x, origin = "1970-01-01")
转换 Unix。但现在我正在尝试使用以下方法将一整列 Unix 转换为日期时间:
as.POSIXct(x$time, origin="1970-01-01")
这给了我:
as.POSIXlt.character(as.character(x), ...) 中的错误: 字符串不是标准的明确格式`
最好的方法是什么?
【问题讨论】:
-
我只在尝试转换“秒纪元”时使用
origin,尽管在这里使用它并不是错误。这种方式没问题,但是报错说明列中至少有一个元素格式不正确,用as.POSIXct(c("1970-02-03","aa"), origin="1970-01-01")可以看出。 -
据我所知,
as.POSIXct应该已经被矢量化,并且您的呼叫应该可以正常工作。可能你的数据有问题。 -
请提供
x的一些示例值 -
试试
structure(x, class = c('POSIXct', 'POSIXt')),打印出来会不会出错?如果没有,请尝试as.POSIXlt(structure(x, class = c('POSIXct', 'POSIXt'))) -
@harkintr,您的至少一项数据有问题。您对数据的至少一项假设是不正确的。这种错误不会发生在负数、
NA或其他类型的numeric上,所以很明显它不是numeric。这意味着你要么有factor要么有character,在这种情况下你需要找出你的哪个字符串是错误的。如果您提供数据样本(如 MichaelChirico 建议的那样),也许我们可以帮助您 (1) 找出哪些元素是错误的,然后 (2) 如何处理/修复它们。