R中的日历日期算术

时间:2014-05-08 00:51:04

标签: r datetime

R中是否有办法进行日历算术,例如

> as.Date('2014-03-30') - months(1)
[1] 2014-02-28

除了实际上没有这样的months功能。这可以通过了解SQL和Java中的闰年和夏令时来完成,但我无法在R中找到一种方法。我认为我会变聪明并使用seq但没有:

> seq(as.POSIXct('2014-03-30', tz='UTC'), by = '-1 months', length=2)[2]
[1] "2014-03-02 UTC"

2 个答案:

答案 0 :(得分:4)

这是使用RcppBDT包装的一种方法 (Boost Date_Time的(部分)供R使用:

R> library(RcppBDT)
R> dt <- new(bdtDt, 2014, 3, 30)
R> dt
[1] "2014-03-30"
R> dt$addMonths(-1)
R> dt
[1] "2014-02-28"
R> 

答案 1 :(得分:-1)

这对于有组织的评论来说太长了,但是months 是一个函数,使用as.POSIXlt(而不是ct)可以轻松提取日期属性

test <- as.POSIXlt('2014-03-30', tz='UTC')
attributes(test)$names
test$mon
months(test)

鉴于test$mon返回一个数值,在月份上执行算术很容易。但是,从1月份减去1个月只会给出-1(Jan为0),重新定义test$mon <- test$mon - 1似乎没什么帮助。

尽管如此,根据您的申请,上述信息可能仍然有用。