找到上一个星期一

时间:2016-01-16 02:05:51

标签: r lubridate

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

的函数

1 个答案:

答案 0 :(得分:7)

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

请注意,最好使用"Date"类,因为不需要时间,"Date"类没有时区,因此可以避免与"POSIXt"类相关的潜在时区错误。< / p>

动物园插图中有nextfri个函数zoo quickref vignette,我们可以将其用作类似函数的基础。我们进行了这些更改(1)ceiling替换为floor,(2)5(星期五)替换为1(星期一)和(3)我们添加origin=参数{{ 1}} - 如果加载了zoo,则提供默认原点,因此可以选择省略to as.Date参数。

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

"Date"

例如,

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

> lastmon(as.Date(c("2016-01-15", "2016-01-11"))) [1] "2016-01-11" "2016-01-11" 功能可以简单地简化为:

lastmon

注意:还可以查看SO回答herehereherehere了解lastmon2 <- function(x) x - as.numeric(x-1+4)%%7 的更多用途或变种。