【问题标题】:Start the Weeknum on Sunday as the first day of the week在星期天开始 Weeknum 作为一周的第一天
【发布时间】: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


    【解决方案1】:

    知道了。 对此稍作调整应该可以达到我的目的!

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

    【讨论】:

      猜你喜欢
      • 2018-07-25
      • 2018-02-09
      • 1970-01-01
      • 2016-05-18
      • 1970-01-01
      • 1970-01-01
      • 2016-11-29
      • 2013-06-05
      • 1970-01-01
      相关资源
      最近更新 更多