首页 > 解决方案 > 使用日期时间格式,无法处理 POSIXct。(as.POSIXlt.numeric(x) 中的错误:必须提供“原点”)

问题描述

例如,我的数据库中有一个日期时间列,格式为“2017-01-02 8:27”。我想在这个日期时间版本上增加 10 分钟。

dat$EventTime=as.POSIXct(strptime( dat$EventTime, "%Y-%m-%d %H:%M"), tz = "", origin = '1970-01-01 00:00')

--date-time 格式变为 2017-01-02 08:27:00 没关系,但是当我尝试添加 10 分钟时

dat$EventTime[1]+minute(10)

--我遇到了这个错误

as.POSIXlt.numeric(x) 中的错误:必须提供“原点”

——你能帮我解决这个问题吗?

标签: rdatetimeposixct

解决方案


只需anytime()不需要格式或来源anytime的包中使用即可:

R> anytime("2017-01-02 08:27")
[1] "2017-01-02 08:27:00 CST"
R>

结果对象当然POSIXct是可以随意计算的:

R> anytime("2017-01-02 08:27") + seq(1,6)*60
[1] "2017-01-02 08:28:00 CST" "2017-01-02 08:29:00 CST" "2017-01-02 08:30:00 CST"
[4] "2017-01-02 08:31:00 CST" "2017-01-02 08:32:00 CST" "2017-01-02 08:33:00 CST"
R>

编辑:我刚刚意识到我们使用了默认(Boost)解析器不喜欢的单个数字“8”。现在更正为“08”。


推荐阅读