【发布时间】:2016-11-29 13:05:03
【问题描述】:
我最近在 R 中遇到了一个处理日期的问题。 2015 年的最后一天 (2015-12-31) 是星期四,这意味着如果我将星期日视为一周的开始日,则一年中的最后一周仅包含 5 天。现在,我希望周五和周六的 2016-01-01 和 2016-01-02 与第 53 周相关联,并从周日的 2016-01-03 开始第 1 周。
require(lubridate)
range <- seq(as.Date('2015-12-26'), by = 1, len = 10)
df <- data.frame(range)
df$WKN <- as.numeric(strftime(df$range, format = "%U")) + 1
df$weekday <- weekdays(df$range)
df$weeknum <- wday(df$range)
这会给我以下结果:
df:
range WKN weekday weeknum
2015-12-26 52 Saturday 7
2015-12-27 53 Sunday 1
2015-12-28 53 Monday 2
2015-12-29 53 Tuesday 3
2015-12-30 53 Wednesday 4
2015-12-31 53 Thursday 5
2016-01-01 1 Friday 6
2016-01-02 1 Saturday 7
2016-01-03 2 Sunday 1
2016-01-04 2 Monday 2
现在我想让我的数据框如下:
df:
range WKN weekday weeknum
2015-12-26 52 Saturday 7
2015-12-27 53 Sunday 1
2015-12-28 53 Monday 2
2015-12-29 53 Tuesday 3
2015-12-30 53 Wednesday 4
2015-12-31 53 Thursday 5
2016-01-01 53 Friday 6
2016-01-02 53 Saturday 7
2016-01-03 1 Sunday 1
2016-01-04 1 Monday 2
谁能给我指出一个自动化的方向,这样我就不必每年都更改代码?
【问题讨论】:
标签: r date datetime dplyr lubridate