是否可以计算上周的日期值,但是锚定到特定日期?

时间:2018-05-03 11:50:03

标签: r date dynamic-programming

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

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

例如:

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

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

如果使用单词过于复杂 - 尤其是nd / th / rd / st - 那么我很高兴它出现在{{1}格式也是。

此外,我想锚定日期,以便无论何时获得日期,它们将始终涵盖前一周到那几天。

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

有办法做到这一点吗?

1 个答案:

答案 0 :(得分:0)

使用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"