如何在给定的任意年份中获得去年的相同工作日?

use*_*291 2 r date dayofweek

我希望任何一年都能得到去年的同一天。我怎样才能最好地在 R 中做到这一点。例如,给定星期日 2010/01/03,我想获取前一年同一周的星期日。

# "Sunday"
weekdays(as.Date("2010/01/03", format="%Y/%m/%d"))

# "Saturday"
weekdays(as.Date("2009/01/03", format="%Y/%m/%d"))
Run Code Online (Sandbox Code Playgroud)

Uwe*_*Uwe 5

要查找一年前的同一个工作日,只需从给定日期中减去 52 周或 364 天:

d <- as.Date("2010-01-03")
weekdays(d)
#[1] "Sunday"
d - 52L * 7L
#[1] "2009-01-04"
weekdays(d - 52L * 7L)
#[1] "Sunday"
Run Code Online (Sandbox Code Playgroud)

请注意,日历年有 365 天(闰年有 366 天),比 52 周多出一天或两天。因此,一年前同一工作日的日历日期会移动一两天。(或者,它解释了为什么新年前夜总是在不同的工作日。)