我有一个大致涵盖11年的每周数据集。问题是,并非每个星期都在本月1日开始,而不是每个星期都在每月的7月结束。
我尝试在几周内创建一个月的序列以查看相应的日期,但是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日(其他日期)结束。这甚至可能吗? 非常感谢任何帮助。
答案 0 :(得分:2)
尝试
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')