获取上周五的日期

问题描述 投票:0回答:5

我可以获得今天的日期:

Sys.Date( )

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

我尝试过:

library(xts)

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

但这会产生错误。

r date xts weekday
5个回答
14
投票

我认为这应该有效:

library(lubridate)

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

11
投票

试试这个:

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

其中

lastfri
与此动物园小插图、
zoo Quickref 小插图
中的单行函数 nextfri 相同,只不过
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 号星期五。


6
投票

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

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   

1
投票

上周五是 4 天前,因此:

Sys.Date()-4

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

或者对于一周中的任何一天,使用

base

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

0
投票
library(clock)

dt <- as_naive_time(Sys.Date())
friday <- weekday(clock_weekdays$friday)
as.Date(time_point_shift(dt, friday, which = "previous"))
© www.soinside.com 2019 - 2024. All rights reserved.