我想添加一个月到我有一个日期。但到目前为止它不可能以一种直接的方式进行。以下是我的尝试。添加一个月到一个日期
d <- as.Date("2004-01-31")
d + 60
# [1] "2004-03-31"
添加不会帮助,因为该月不会重叠。
seq(as.Date("2004-01-31"), by = "month", length = 2)
# [1] "2004-01-31" "2004-03-02"
上面可能有效,但它又不是直截了当。 此外其还增加了30天,东西其中有像下面
seq(as.Date("2004-01-31"), by = "month", length = 10)
# [1] "2004-01-31" "2004-03-02" "2004-03-31" "2004-05-01" "2004-05-31" "2004-07-01" "2004-07-31" "2004-08-31" "2004-10-01" "2004-10-31"
在上面,第2个日期问题之日起,一个月都没有改变。
还有以下方法也未能为一个月,但是为今年成功
d <- as.POSIXlt(as.Date("2010-01-01"))
d$year <- d$year +1
d
# [1] "2011-01-01 UTC"
d <- as.POSIXlt(as.Date("2010-01-01"))
d$month <- d$month +1
d
错误
format.POSIXlt(x, usetz = TRUE)
:无效的“X”的说法
什么是做这种正确的方法是什么?
但是这并不总是奏效:'d < - as.Date(“2004-01-31”)'返回'NA'。 [下面的答案](http://stackoverflow.com/a/14182326/143319)给出了该情况的预期答案。 –
> d < - as.Date(“2004-01-31”) > d#Huh? [1]“2004-01-31” – hd1
对不起,我不清楚。如果你用'2004-01-31'替换第二行中的日期,然后运行代码的其余部分,就会得到'NA'。在这种情况下,当你增加月份时,它会尝试将其设置为“2004-02-31”,由于该日期不是有效日期,所以会返回“NA”。当你在下一行代码中设置“day(d)”时,'d'已经是'NA'。 –