【发布时间】:2017-01-02 22:35:24
【问题描述】:
我有一个 lubridate interval 并希望将天数作为整数。但是我得到以下奇怪的中间结果:
library("lubridate")
i1 <- interval("2015-01-01 00:00:00", "2016-01-01 00:00:00")
i1 <- interval(ymd_hms("2015-01-01 00:00:00"), ymd_hms("2016-01-01 00:00:00")) # Gives the same result
duration(i1)
# [1] "31536000s (~365 days)"
duration(i1, units = "days")
# [1] "2724710400000s (~86340.86 years)"
这里有两个可用的快捷方式。后者抛出一条消息“强制间隔到持续时间”(我不知道原因......)
> as.numeric(as.duration(i1), units = "days")
[1] 365
> as.numeric(i1, units = 'days')
(R 版本 3.3.0 日期为 2016-05-03,润滑版本 1.5.6。)
【问题讨论】:
-
在完全不知道
r的情况下,我可以告诉你每天有86,400秒,并且猜测你正在获得某种双重转换。 -
Durations 仅将数据存储为秒以保持一致性。使用周期,单位更灵活:
p1 <- as.period(i1, unit = 'days') ; p1 ; day(p1)。请注意,由于闰年,365 天和 1 年不一定是同一件事,并且 lubridate 是考虑到这一点而构建的。