确定同一周的日期

时间:2012-12-12 17:15:51

标签: r

给定日期向量(可能跨越多年):

exampleDates = as.Date( 1 : 15, origin = as.Date( "2012-12-25" ) )

我想生成一个标识符,将日期分为几周。假设日历从星期日开始:

  • 26日到29日将生成相同的标识符
  • 30日到5日有相同的身份
  • 6日到9日有相同的身份

这是一个有缺陷的尝试:

strftime( exampleDates , format = "%Y%W" )

它将第31个和第1个视为不同的星期(毫不奇怪)。我正在寻找类似于strftime的东西,它会生成一个标识符(字符,数字,等等),我可以用它来按周分组日期。

我确信那里已经有了一些聪明的功能。

2 个答案:

答案 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