给定日期向量(可能跨越多年):
exampleDates = as.Date( 1 : 15, origin = as.Date( "2012-12-25" ) )
我想生成一个标识符,将日期分为几周。假设日历从星期日开始:
这是一个有缺陷的尝试:
strftime( exampleDates , format = "%Y%W" )
它将第31个和第1个视为不同的星期(毫不奇怪)。我正在寻找类似于strftime
的东西,它会生成一个标识符(字符,数字,等等),我可以用它来按周分组日期。
我确信那里已经有了一些聪明的功能。
答案 0 :(得分:10)
这将为属于给定周的日期组分配一个唯一的整数:
origin <- as.Date("2012-12-9") ## A Sunday
weekID <- as.numeric(exampleDates - origin) %/% 7
data.frame(date = exampleDates,
weekday = weekdays(exampleDates),
week = weekID)
# date weekday week
# 1 2012-12-26 Wednesday 2
# 2 2012-12-27 Thursday 2
# 3 2012-12-28 Friday 2
# 4 2012-12-29 Saturday 2
# 5 2012-12-30 Sunday 3
# 6 2012-12-31 Monday 3
# 7 2013-01-01 Tuesday 3
# 8 2013-01-02 Wednesday 3
# 9 2013-01-03 Thursday 3
# 10 2013-01-04 Friday 3
# 11 2013-01-05 Saturday 3
# 12 2013-01-06 Sunday 4
# 13 2013-01-07 Monday 4
# 14 2013-01-08 Tuesday 4
# 15 2013-01-09 Wednesday 4
答案 1 :(得分:4)
使用difftime,
floor(difftime( exampleDates,as.Date( "2012-12-16" ), units = "week"))
time differences in weeks
[1] 1 2 2 2 2 2 2 2 3 3 3 3 3 3 3