r - R 中日期的定制地板/天花板

标签 r datetime intervals floor ceil

假设我的日期范围是 startend哪里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/

相关文章:

r - 如何在R中聚合分类数据?

android - 在 Android 中生成两个日期之间的日期

android - 如何根据 rgw 距离沿 android 中的一条线在 Google map 折线上添加标记?

r - 在图例中显示不同的几何图形以实现共同的美感

r - 如何展平非原子函数结果,以便可以将其分配为dplyr突变步骤的一部分?

R + Shiny : Save Uploaded Dataset to List/choose from list item to view

c# - 如何在 LINQ 中比较日期(Likewise Like 在 SQL 查询中)

java - 在 Java 中格式化日期

r - 检查 R 中的两个区间是否重叠

java - 如何在 Android 中使用计时器?