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"
答案 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
似乎没什么帮助。
尽管如此,根据您的申请,上述信息可能仍然有用。