星期日作为一周的第一天开始周末

时间:2016-10-11 17:19:39

标签: r dplyr lubridate strptime

2017年(2017-12-31)的最后一天是星期日,这意味着如果我将星期日视为我一周的开始日,那么今年的最后一周只包含1天。现在,我希望2016-01-01到2016-01-07,与第53周相关联,并从2016-01-03开始第1周,即第1周。

我有以下数据框架结构:

require(lubridate)
range <- seq(as.Date('2017-12-26'), by = 1, len = 10)
df <- data.frame(range)
ddf$WKN <- as.integer(format(df$range + 1, '%V'))
df$weekday <- weekdays(df$range)
df$weeknum <- wday(df$range)

这会给我这个:

df:
range      WKN   weekday   weeknum
2017-12-26  52   Tuesday       3
2017-12-27  52 Wednesday       4
2017-12-28  52  Thursday       5
2017-12-29  52    Friday       7
2017-12-30  52  Saturday       7
2017-12-31  01    Sunday       1
2018-01-01  01    Monday       2
2018-01-02  01   Tuesday       3
2018-01-03  01 Wednesday       4
2018-01-04  01  Thursday       5

我想要的是:

df:
range      WKN   weekday   weeknum
2017-12-26  52   Tuesday       3
2017-12-27  52 Wednesday       4
2017-12-28  52  Thursday       5
2017-12-29  52    Friday       7
2017-12-30  52  Saturday       7
2017-12-31  53    Sunday       1
2018-01-01  53    Monday       2
2018-01-02  53   Tuesday       3
2018-01-03  53 Wednesday       4
2018-01-04  53  Thursday       5
.
.
2018-01-07  01    Sunday       1

有人能指出我正确的方向吗? @alistaire在这里提供了解决方案Start first day of week of the year on Sunday and end last day of week of the year on Saturday但我没有预见到这一点。

1 个答案:

答案 0 :(得分:0)

知道了。 对此的一点调整应该符合我的目的!

df$WKN <- as.integer(format(df$range, '%U'))