【问题标题】:"Error in as.POSIXlt.numeric(value) : 'origin' must be supplied" When Trying To Add POSIXlt To Dataframe“as.POSIXlt.numeric(value) 中的错误:必须提供'origin'”尝试将 POSIXlt 添加到数据帧时
【发布时间】:2020-09-15 20:07:10
【问题描述】:

我正在寻找一个脚本,它可以简单地将具有两位数年份的数据框(观察)中的日期更正为四位数。我有所有的逻辑,但是当我运行这段代码时出现错误:

observations[1,"Datetime_UTC"] <- observations[1,"Datetime_UTC"] + years(2000)

这行结果:

# Error in as.POSIXlt.numeric(value) : 'origin' must be supplied

如何解决此错误?

谢谢!

【问题讨论】:

  • 该错误表明您要转换为POSIXlt 的值只是一个数字,而不是字符串或现有的POSIXt 友好格式。因此,如何解释它取决于数据的来源。许多工具使用 unix“纪元”(自“1970-01-01 00:00:00 UTC”以来的秒数),但许多工具(包括 Excel)使用不同的来源和单位。尝试添加origin="1970-01-01"(如果纪元秒)
  • 另外:您不应该在 data.frames 中使用 POSIXlt 向量。请改用 POSIXct。
  • @IRTFM 为什么不能在 data.frames 中使用 POSIXlt 向量?
  • 因为 POSIXlt 向量实际上是列表,而数据框函数不支持访问作为列表的数据框列。 stackoverflow.com/questions/43799852/…

标签: r dataframe lubridate posixlt


【解决方案1】:

如果您的日期以某种常规格式存储,但年份为 2 位数,则让 lubridate 函数处理它。它们可以处理大多数分隔符(甚至是不常见的分隔符)。

library(lubridate)
ymd("20/11/9")
"2020-11-09"
dmy("31-1-90")
"1990-01-31"
mdy("3_07_00")
"2000-03-07"

【讨论】:

  • 感谢您的帮助!我之前尝试过这些,但它们没有工作,但我没有尝试过 mdy_hms(),我的数据就是这样格式化的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-09-17
  • 2015-11-11
  • 2021-05-22
相关资源
最近更新 更多