在 R 中为每个日历月创建四个单独的星期

Creating four separate weeks for each calendar month in R

我有一个大约涵盖 11 年的每周数据集。问题是不是每个星期都在每月的 1 号开始,也不是每个星期都在每月的 7 号结束。

我试图创建一个以周为单位的 1 个月的序列以查看相应的日期,但是 1 月份(31 天)在 29 日结束:

seq(as.Date("2004-01-01"), as.Date("2004-01-31"), 'weeks')
[1] "2004-01-01" "2004-01-08" "2004-01-15" "2004-01-22" "2004-01-29"

我需要创建一个每周日期序列,每个月的每个星期从 1 日开始,到 28 日(2 月)、30 日或 31 日(其他日期)结束。这可能吗? 非常感谢任何帮助。

尝试

begin <- seq(as.Date('2004-01-01'), as.Date('2014-02-01'), by='1 month')
end <- begin-1
lst <- split(v1, list(month(v1),year(v1)), drop=TRUE)
res <- unsplit(Map(function(x,y,z) {
      x[c(1, length(x))] <- c(y,z)
      x}, 
   lst, begin[-length(begin)], end[-1L]), list(month(v1), year(v1)))
head(res)
#[1] "2004-01-01" "2004-01-08" "2004-01-15" "2004-01-22" "2004-01-31"
#[6] "2004-02-01"
tail(res)
#[1] "2013-12-31" "2014-01-01" "2014-01-09" "2014-01-16" "2014-01-23"
#[6] "2014-01-31"

数据

v1 <- seq(as.Date("2004-01-01"), as.Date('2014-01-31'), 'week')