我正在寻找一种方法来查找PREVIOUS日历周的星期一的日期对象。例如,今天是2016年1月15日;我需要构建一个返回'2016-01-04 UTC'
的函数答案 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回答here,here,here和here了解lastmon2 <- function(x) x - as.numeric(x-1+4)%%7
的更多用途或变种。