将月份添加到日期 [英] Add a month to a Date
问题描述
我正在尝试为我拥有的日期添加一个月.但是到目前为止,它不可能以直接的方式进行.以下是我尝试过的.
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 +1d# [1] "2011-01-01 UTC"d <- as.POSIXlt(as.Date("2010-01-01"))d$month <- d$month +1d
<块引用>
format.POSIXlt(x, usetz = TRUE)
中的错误:'x' 参数无效
这样做的正确方法是什么?
Vanilla R 有一个简单的 difftime 类,但是 Lubridate CRAN 包可让您按要求执行操作:
需要(润滑)d <- ymd(as.Date('2004-01-01')) %m+% 月 (1)d[1] 《2004-02-01》
希望有所帮助.
I am trying to add a month to a date i have. But then its not possible in a straight manner so far. Following is what i tried.
d <- as.Date("2004-01-31")
d + 60
# [1] "2004-03-31"
Adding wont help as the month wont be overlapped.
seq(as.Date("2004-01-31"), by = "month", length = 2)
# [1] "2004-01-31" "2004-03-02"
Above might work , but again its not straight forward. Also its also adding 30 days or something to the date which has issues like the below
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"
In the above , for the first 2 dates , month haven’t changed.
Also the following approach also failed for month but was success for year
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
Error in
format.POSIXlt(x, usetz = TRUE)
: invalid 'x' argument
What is the right method to do this ?
Vanilla R has a naive difftime class, but the Lubridate CRAN package lets you do what you ask:
require(lubridate)
d <- ymd(as.Date('2004-01-01')) %m+% months(1)
d
[1] "2004-02-01"
Hope that helps.
这篇关于将月份添加到日期的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!