找到上一个星期一

Ste*_*ley 2 r lubridate

我正在寻找一种方法来找到PREVIOUS日历周的星期一的日期对象.例如,今天是2016年1月15日; 我需要构建一个返回'2016-01-04 UTC'的函数

G. *_*eck 7

这个问题要求"前一个日历周的星期一".我们在下面假设这意味着您希望在输入日期之前或之前的星期一.

请注意,使用"Date"class 会更好,因为"Date"不需要时间,类没有时区,因此可以避免与"POSIXt"类相关的潜在时区错误.

nextfri在动物园里有 动物插图,动物园quickref晕图,我们可以使用它作为类似功能的基础.我们将这些更改(1)ceiling替换为floor,(2)5(星期五)替换为1(星期一)和(3)我们添加origin=参数to as.Date- 如果加载动物园,则提供默认原点,因此origin=参数可以是可选的省略.

此函数仅使用基数R并进行矢量化.它接受一个"Date"类向量,并"Date"在相应的输入日期或之前返回星期一的日期类向量.

lastmon <- function(x) 7 * floor(as.numeric(x-1+4)/7) + as.Date(1-4, origin="1970-01-01")
Run Code Online (Sandbox Code Playgroud)

例如,

 > lastmon(as.Date(c("2016-01-15", "2016-01-11")))
[1] "2016-01-11" "2016-01-11"
Run Code Online (Sandbox Code Playgroud)

lastmon功能可以简单地简化为:

lastmon2 <- function(x) x - as.numeric(x-1+4)%%7
Run Code Online (Sandbox Code Playgroud)

注意:此处,此处,此处此处还可以看到SO答案,以获得更多用途nextfri或其变体.