【问题标题】:R: Get workweek number, not seven day periods since Jan 1stR:获取工作周数,而不是自 1 月 1 日以来的 7 天周期
【发布时间】:2015-12-31 20:40:39
【问题描述】:

您好,我正在查看与几年内商品价格有关的数据。我想按工作周汇总价格,而不是自 1 月 1 日以来按 7 天周期定义的周数。当我尝试时:

data <- mutate(data, week = week(strptime(Date, "%m/%d/%Y")))

lubridate week() 函数将“1/13/10”(mdy)计为第 2 周,将“1/14/10”计为第 3 周。我希望它们在同一周。基本上在同一周的任何周一至周五的运行。如果这一年从星期三开始,我希望第 1 周为周三至周五,第 2 周为下周一开始。我没有任何周末的数据。有什么想法吗?谢谢

【问题讨论】:

    标签: r date strptime date-conversion lubridate


    【解决方案1】:

    假设 Date 列是 Date 格式,这将为您提供周数(您可以使用 as.Date() 进行转换):

    data <- mutate(data, week = format(Date, '%U'))
    

    如果你想要星期和年份,你可以使用:

    data <- mutate(data, week = format(Date, '%Y-%U'))
    

    它将正确地计算部分周数。

    注意:周数以 00 开头(但是,这应该没问题)。

    你也可以在没有 dplyr 的情况下做到这一点,它是变异的,像这样:

    data$week <- format(data$Date, '%U')
    

    【讨论】:

    • 您的代码在没有 plyr/dplyr 包加载的情况下导致错误。
    • 正确。它需要 dplyr。但是,由于发布的问题开始使用 mutate,我认为 dplyr 解决方案是可以接受的。我将编辑以添加非 dplyr 版本。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-04
    • 2018-07-27
    • 1970-01-01
    • 1970-01-01
    • 2011-04-14
    相关资源
    最近更新 更多