【问题标题】:R: Converting numeric timestamp to POSIXct object returns NAR:将数字时间戳转换为 POSIXct 对象返回 NA
【发布时间】:2016-12-18 02:39:10
【问题描述】:

我知道这是一个常见问题,但我看到的许多其他问题都没有为我解决这个问题。我正在尝试将数字时间戳转换为 POSIXct,但无论我做什么,它都会给我 NA。例如:

as.POSIXct(20090319043255, format="%Y%m%d%H%M%S", origin="1970-01-01")

我已经尝试了几乎所有我能想到的格式变化:插入空格、更改原点格式、不包括原点(这只是给我“必须提供原点”错误),一切。我难住了。我错过了什么愚蠢的东西吗?

在你问之前,是的,我已经检查了语言环境。我在美国。

【问题讨论】:

  • 输入需要是一个字符串。 as.POSIXct(as.character(20090319043255), format="%Y%m%d%H%M%S") 工作。
  • 为什么数字对象在这种情况下不起作用?我不知道这背后的原因。
  • 带有数值,它被解释为一个数字时间作为一个纪元以来的秒数,在这种情况下你不需要format参数,但是,我不相信这会给你正确的输出,因为你的值显然是一个带有格式的字符串。
  • Psidom 完全正确。如果您希望 as.POSIXct 与数字参数一起正常工作,则必须使用自起源以来的秒数。试试这个例如:as.POSIXct(1238000000, origin="1970-01-01")
  • 我想我明白了。因此,如果我使用数字对象呈现 as.POSIXct 命令,R 假设我在询问自原点以来经过的时间量,但如果我给它一个字符对象,它假设我希望它被强制转换为 POSIXct 对象。对吗?

标签: r posixct


【解决方案1】:

我建议使用 lubridate 包。 尝试运行以下代码。

> library(lubridate)
> ymd_hms("20090319043255")
[1] "2009-03-19 04:32:55 UTC"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-03-23
    • 2018-09-28
    • 2021-07-13
    • 1970-01-01
    • 2020-11-29
    • 2015-07-22
    • 2014-08-21
    • 1970-01-01
    相关资源
    最近更新 更多