【发布时间】:2016-10-11 17:19:38
【问题描述】:
2017 年的最后一天 (2017-12-31) 是星期日,这意味着如果我将星期日视为一周的开始日,则一年中的最后一周仅包含 1 天。现在,我希望 2016-01-01 到 2016-01-07 与第 53 周相关联,并从 2016-01-03 开始第 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 但我没有预见到这个问题。
【问题讨论】:
标签: r dplyr lubridate strptime