假设我的日期范围是 start
至end
哪里start <- as.Date(2009-11-05), end <- as.Date(2009-12-17)
.
我想要一个函数,该函数本质上充当自定义的下限/上限并返回一个日期间隔,使得下限是“yyyy-mm-23”形式的第一个日期小于或等于“2009-11-05” ',上限是第一个大于或等于“2009-12-17”且格式为“yyyy-mm-22”的日期。
在上面的示例中,函数应返回间隔 ('2009-10-23, 2009-12-22)。
我尝试过使用 seq.Date 并在其上使用 length 函数,但这似乎很乏味,我想知道是否有更快的解决方案。
谢谢
最佳答案
我不知道有这样的函数,但我会编写如下代码:
代码
custom_bound <- function(date, type, ref_day){
obs_day <- lubridate::day(date)
if(type == "lower"){aux <- -1}
if(type == "upper"){aux <- 1}
while(obs_day != ref_day ){
date <- date + days(aux)
obs_day <- lubridate::day(date)
}
return(date)
}
输出
> custom_bound(date = as.Date("2009-11-05"),type = "lower",ref_day = 23)
[1] "2009-10-23"
> custom_bound(date = as.Date("2009-12-17"),type = "upper",ref_day = 22)
[1] "2009-12-22"
关于r - R 中日期的定制地板/天花板,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75063895/