如何使用 R 将周数转换为日期格式

问题描述

我正在尝试将数据集中包含周数的列转换为每周日期。我试图使用 lubridate 包,但找不到解决方案。数据集如下所示:

df <- tibble(week = c("202009","202010","202011","202012","202013","202014"),Revenue = c(4543,6764,2324,5674,2232,2323))

所以我想创建一个每周格式的日期列,例如(2020-03-07,2020-03-14).

有人知道如何将这些周数转换为每周日期吗?

解决方法

也许有更自动化的方法,但请尝试这样的方法。我认为这是正确的日子,我查看了 2020 年的日历并数了一下。但是,如果出现问题,则需要使用 (week - 1) * 7 - 1 组件返回您想要的内容。

这只是获取一年的第一天,加上 x 周的天数,然后使用 ceiling_date() 查找下一个星期日。

library(dplyr)
library(tidyr)
library(lubridate)

df %>% 
  separate(week,c("year","week"),sep = 4,convert = TRUE) %>% 
  mutate(date = ceiling_date(ymd(paste(year,"01",sep = "-")) + 
                               (week - 1) * 7 - 1,"week",week_start = 7))

# # A tibble: 6 x 4
#    year  week Revenue date      
#   <int> <int>   <dbl> <date>    
# 1  2020     9    4543 2020-03-01
# 2  2020    10    6764 2020-03-08
# 3  2020    11    2324 2020-03-15
# 4  2020    12    5674 2020-03-22
# 5  2020    13    2232 2020-03-29
# 6  2020    14    2323 2020-04-05