【问题标题】:Obtaining last Friday's date获取上周五的日期
【发布时间】:2015-05-12 08:36:02
【问题描述】:

我可以得到今天的日期:

Sys.Date( )

但是我如何获得上周五的日期?

我试过了:

library(xts)

date1 <- Sys.Date( ) 
to.weekly(date1 )

但这会报错。

【问题讨论】:

    标签: r date xts weekday


    【解决方案1】:

    我认为这应该可行:

    library(lubridate)
    
    Sys.Date() - wday(Sys.Date() + 1)
    

    【讨论】:

      【解决方案2】:

      试试这个:

      library(zoo)
      lastfri(Sys.Date())
      

      其中lastfri 与此动物园小插图中的单行函数nextfri 相同,zoo quickref vignette,只是将ceiling 替换为floor。请注意,lastfri 是矢量化的,即它可以采用输入日期的矢量并生成输出日期的矢量。例如,

      library(zoo)
      Sys.Date()
      ## 2015-03-10
      lastfri(Sys.Date() + 0:6)
      ## [1] "2015-03-06" "2015-03-06" "2015-03-06" "2015-03-13" "2015-03-13"
      ## [6] "2015-03-13" "2015-03-13"
      

      因此,上周五是 3 月 6 日,我们一直得到 3 月 6 日,直到这一天提前到下周五,此时上周五是 3 月 13 日。

      顺便说一句:下周五是 13 号周五。

      【讨论】:

      • 我绝对没想到会有一个现成的功能。酷。
      【解决方案3】:

      这是一个查找一周中任何一天的最后日期的函数:

      getlastdate <- function(day) {
      library(lubridate)
      dates <- seq((Sys.Date()-7), (Sys.Date()-1), by="days")
      dates[wday(dates, label=T)==day]
      }
      
      getlastdate("Mon")  
      
      # "2015-03-09"
      

      以缩写格式输入星期几:即

      Sun   Mon Tues  Wed   Thurs Fri   Sat   
      

      【讨论】:

        【解决方案4】:

        上周五是 4 天前,因此:

        Sys.Date()-4
        
        > Sys.Date()-4
        [1] "2015-03-06"
        

        或一周中的任何一天,使用base:

        Sys.Date()-(as.POSIXlt(Sys.Date())$wday+2)
        

        【讨论】:

        • 我希望 OP 希望这不仅仅在星期二工作。
        • 虽然这可能是真的,但没有具体说明。我使用base 添加了一个解决方案。
        猜你喜欢
        • 2017-09-16
        • 2012-08-08
        • 1970-01-01
        • 2021-09-29
        • 1970-01-01
        • 2014-03-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多