首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在R中适当地添加月份

在R中适当地添加月份
EN

Stack Overflow用户
提问于 2019-11-26 19:43:21
回答 2查看 156关注 0票数 0

我正试图在现有的日期基础上再增加15个月。然而,这是不合适的月底,这是预期的使用%m+%在润滑油。

代码语言:javascript
复制
> as.Date("2018-04-30") %m+% months(15)
[1] "2019-07-30"
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-11-26 19:55:40

%m+%只是简单地添加月份,在任何时候都没有假设它将保持“月的最后一天”状态。正如@duckmayr简洁地指出的那样,它保护的是不超过本月底,但我认为,推断出它应该相应地推出并不是一个安全的假设。

替代办法:

代码语言:javascript
复制
rollback(as.Date("2018-04-30") %m+% months(15+1))
# [1] "2019-07-31"

ceiling_date(as.Date("2018-04-30") %m+% months(15), unit="month") - 1
# [1] "2019-07-31"

ceiling_date(as.Date("2018-04-30") %m+% months(15), unit="month") %m+% days(-1)
# [1] "2019-07-31"

也许还有更多的组合。

票数 2
EN

Stack Overflow用户

发布于 2019-11-26 21:00:36

您可以在动物园包中使用yearmon类。我认为为此目的考虑比lubridate函数看起来更好。您不需要单独计算额外的天数。注意,月份的加法需要以年份为单位,所以将月份除以12个月。frac=1作为as.Date.yearmon的参数返回月份的最后一天:

代码语言:javascript
复制
library(zoo)
as.Date( as.yearmon( as.Date("2018-04-30") ) +15 , frac=1)
[1] "2033-04-30"    Wrong!!!
# Divided months by 12
as.Date( as.yearmon( as.Date("2018-04-30") ) +15/12 , frac=1)
[1] "2019-07-31"   Success
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59058335

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档