gpt4 book ai didi

r - 为日期添加一个月

转载 作者:行者123 更新时间:2023-12-03 05:52:32 24 4
gpt4 key购买 nike

我正在尝试在已有的日期上添加一个月。但到目前为止还不可能以直接的方式进行。以下是我尝试过的。

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

Error in format.POSIXlt(x, usetz = TRUE) : invalid 'x' argument

执行此操作的正确方法是什么?

最佳答案

lubridate 的函数 %m+% 添加一个月,但不超过新月份的最后一天。

library(lubridate)
(d <- ymd("2012-01-31"))
1 parsed with %Y-%m-%d
[1] "2012-01-31 UTC"
d %m+% months(1)
[1] "2012-02-29 UTC"

关于r - 为日期添加一个月,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14169620/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com