R语言 获取上周五的日期

dhxwm5r4  于 2023-10-13  发布在  其他
关注(0)|答案(5)|浏览(112)

我可以得到今天的日期:

Sys.Date( )

但我怎么才能知道上周五的日期呢?
我试过:

library(xts)

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

但这是一个错误。

yhqotfr8

yhqotfr81#

我想这应该行得通:

library(lubridate)

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

fnvucqvd2#

试试这个:

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

其中lastfri与本动物园插图中的单线函数nextfrizoo quickref vignette相同,除了ceilingfloor替换。注意,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号星期五。

twh00eeo

twh00eeo3#

下面是一个函数,它可以找到一周中任何一天的最后一天:

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
zpqajqem

zpqajqem4#

上周五是4天前,因此:

Sys.Date()-4

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

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

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

eh57zj3b5#

library(clock)

dt <- as_naive_time(Sys.Date())
as.Date(time_point_shift(dt, weekday(6), which = "previous")) # sunday = 1

# OR use clock_weekdays

friday <- weekday(clock_weekdays$friday)
as.Date(time_point_shift(dt, friday, which = "previous"))

相关问题