首页 > 解决方案 > 是否可以计算上周的日期值但锚定到特定日期?

问题描述

我想在图表标题中动态使用前一周的日期值(从周日到周六)。

我想列出一周的开始日期和结束日期。

例如:

Start: 22nd April 2018
End: 28th April 2018

Title: "Conversations (22nd April 2018 - 28th April 2018)"

如果使用单词太复杂 - 尤其是nd/ th/ rd/ st- 那么我很高兴它也有DD/MM/YYYY格式。

此外,我想锚定日期,这样无论我什么时候得到日期,它们总是会涵盖前一周到那些确切的日子。

例如,无论我是在周二、周三还是周五运行代码,它总是会挑选出前一周锚定到周日的日期。

有没有办法做到这一点?

标签: rdatedynamic-programming

解决方案


使用while参数:

x1 <- Sys.Date()
x2 <- weekdays(x1)
while(x2 != "Sunday"){
  x1 <- x1 - 1
  x2 <- weekdays(x1)
  }
start_date <- x1 - 7
end_date   <- x1 - 1

给出:

> start_date
[1] "2018-04-22"
> end_date
[1] "2018-04-28"

您可以使用它传递任何日期并查找前一周的开始和结束日期:

x1 <- as.Date("2013-01-04")
x2 <- weekdays(x1)
while(x2 != "Sunday"){
  x1 <- x1 -1
  x2 <- weekdays(x1)
  }
start_date <- x1 - 7
end_date   <- x1 - 1

更好的是,把它变成一个函数

week_findeR <- function(x = Sys.Date()){
  x1 <- as.Date(x)
  x2 <- weekdays(x1)
  while(x2 != "Sunday"){
    x1 <- x1 -1
    x2 <- weekdays(x1)
    }
  return(list(x1-7, x1-1))
  }

给出输出:

> week_findeR()  
[[1]]
[1] "2018-04-22"

[[2]]
[1] "2018-04-28"

> week_findeR("2018-07-04")
[[1]]
[1] "2018-06-24"

[[2]]
[1] "2018-06-30"

推荐阅读