【问题标题】:Is it possible to calculate date values from last week but anchored to a specific day?是否可以计算上周的日期值但锚定到特定日期?
【发布时间】:2018-05-03 11:50:02
【问题描述】:

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

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

例如:

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

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

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

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

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

有没有办法做到这一点?

【问题讨论】:

    标签: r date dynamic-programming


    【解决方案1】:

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

    【讨论】:

    • 这太好了,谢谢。我还找到了另一种解决方案,即从我的数据集中获取日期范围的 minmax 值并使用它们。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-10
    • 2021-05-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多