我想建立一个给定月份之间某一天的月度日期列表。比如说,从2016年3月到2018年3月的所有月份都是15日。
另外,我希望像Februray的第30天一样溢出,并且#34;圆润"到那个月的最后一天(而不是3月1日或2月)。
我的代码:
m <- as.POSIXlt("2018-03-30")
m$year <- m$year -2
wDate <- as.Date(seq(from = m , to = as.POSIXlt(m), by = "month"))
wDate
[1] "2016-03-30" "2016-04-30" "2016-05-30" "2016-06-30" "2016-07-30" "2016-08-30" "2016-09-30" "2016-10-30" "2016-11-30" "2016-12-30" "2017-01-30" "2017-03-02" "2017-03-30" "2017-04-30"
[15] "2017-05-30" "2017-06-30" "2017-07-30" "2017-08-30" "2017-09-30" "2017-10-30" "2017-11-30" "2017-12-30" "2018-01-30" "2018-03-02" "2018-03-30"
如图所示,它代替2018-02-28
,而是列出2018-03-02
。
如何实现所需的调整?
答案 0 :(得分:0)
对于您的第一个问题( 2016年3月至2018年3月的所有15个月),您可以使用seq.Date()
。
m1 <- as.Date("2016-03-15")
seq.Date(from = m1, length.out = 25, by = "month")
# [1] "2016-03-15" "2016-04-15" "2016-05-15" "2016-06-15" "2016-07-15" "2016-08-15" "2016-09-15" "2016-10-15" "2016-11-15" "2016-12-15"
#[11] "2017-01-15" "2017-02-15" "2017-03-15" "2017-04-15" "2017-05-15" "2017-06-15" "2017-07-15" "2017-08-15" "2017-09-15" "2017-10-15"
#[21] "2017-11-15" "2017-12-15" "2018-01-15" "2018-02-15" "2018-03-15"
对于你的第二个请求(我希望...在Februray上的第30天,是&#34;四舍五入&#34;到那个月的最后一天)你可以使用{{1来自%m+%
包的函数。
lubridate
输入m2 <- as.Date("2016-03-31")
library(lubridate)
m2 %m+% months(0:24)
# [1] "2016-03-31" "2016-04-30" "2016-05-31" "2016-06-30" "2016-07-31" "2016-08-31" "2016-09-30" "2016-10-31" "2016-11-30" "2016-12-31"
#[11] "2017-01-31" "2017-02-28" "2017-03-31" "2017-04-30" "2017-05-31" "2017-06-30" "2017-07-31" "2017-08-31" "2017-09-30" "2017-10-31"
#[21] "2017-11-30" "2017-12-31" "2018-01-31" "2018-02-28" "2018-03-31"
了解详情。希望这可以帮助。