Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

Create a vector of years and weeks with ISO-8601 format in R

I would like to create a vector from one date to another displayed as YYYYWW which increments by week. It is important that the weeks are displayed in ISO-8601 standard format, here is a link for reference to the ISO-8601: https://www.epochconverter.com/weeks/2021

To my knowledge, the neatest way to generate weeks in this format is by using lubridates isoyear and isoweek. For example:

from_date <- paste0(lubridate::isoyear("2020-01-01"),lubridate::isoweek("2021-01-01"))

> from_date
> "202053"

to_date <- paste0(lubridate::isoyear(Sys.Date()),lubridate::isoweek(Sys.Date()))
    
> to_date    
> "20222"

How can I create an array between from_date and to_date with an increment of one week keeping the ISO-8601 standard?

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

I have tried something like

YearWeek <- seq(from_date, to_date, by = "weeks")

but seq takes date classes in this instance which forces me out of the ISO-8601 standard.
For reference I would like my final result to look like this:

# Vector of YearWeek from 2021-01-01 to todays date incrmented by week

> YearWeek
>  [1] 202053 202101 202102 202103 202104 202105 202106 202107 202108 202109 202110 202111 202112 202113 202114
  [16] 202115 202116 202117 202118 202119 202120 202121 202122 202123 202124 202125 202126 202127 202128 202129
  [31] 202130 202131 202132 202133 202134 202135 202136 202137 202138 202139 202140 202141 202142 202143 202144
  [46] 202145 202146 202147 202148 202149 202150 202151 202152 202201

>Solution :

Please find below one possible solution to what you are looking for:

Reprex

  • Code
library(lubridate)

# Data
vec_date <- seq(date("2020-01-01"), date("2022-01-12"), by = "weeks")

# Convert data into isodate and isoweek
vec_date_iso <- paste0(lubridate::isoyear(vec_date),lubridate::isoweek(vec_date))
  • Output
vec_date_iso 
#>   [1] "20201"  "20202"  "20203"  "20204"  "20205"  "20206"  "20207"  "20208" 
#>   [9] "20209"  "202010" "202011" "202012" "202013" "202014" "202015" "202016"
#>  [17] "202017" "202018" "202019" "202020" "202021" "202022" "202023" "202024"
#>  [25] "202025" "202026" "202027" "202028" "202029" "202030" "202031" "202032"
#>  [33] "202033" "202034" "202035" "202036" "202037" "202038" "202039" "202040"
#>  [41] "202041" "202042" "202043" "202044" "202045" "202046" "202047" "202048"
#>  [49] "202049" "202050" "202051" "202052" "202053" "20211"  "20212"  "20213" 
#>  [57] "20214"  "20215"  "20216"  "20217"  "20218"  "20219"  "202110" "202111"
#>  [65] "202112" "202113" "202114" "202115" "202116" "202117" "202118" "202119"
#>  [73] "202120" "202121" "202122" "202123" "202124" "202125" "202126" "202127"
#>  [81] "202128" "202129" "202130" "202131" "202132" "202133" "202134" "202135"
#>  [89] "202136" "202137" "202138" "202139" "202140" "202141" "202142" "202143"
#>  [97] "202144" "202145" "202146" "202147" "202148" "202149" "202150" "202151"
#> [105] "202152" "20221"  "20222"

Created on 2022-01-12 by the reprex package (v2.0.1)

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading