[R] strptime, date and conversion of week number into POSIX

Patrick Giraudoux p@tr|ck@g|r@udoux @end|ng |rom un|v-|comte@|r
Mon Feb 22 17:23:54 CET 2021


Thanks Uwe and  Bert,
I got the essential now, and can manage. Date handling stays quite a 
challenge with a variable number of weeks in a year, but I can 
understand why. Means eye-control (or NA detection) of strptime 
conversion stays necessary...
Best,
Patrick


Le 22/02/2021 à 17:09, Uwe Ligges a écrit :
> That monday does not exist. FOr the week before:
>
> strptime(paste0("2020-52","-1"),format="%Y-%W-%u")
> [1] "2020-12-28"
>
> One week later is no longer in 2020, so there is no 53th week.
>
> Best,
> Uwe Ligges
>
>
>
>
>
> On 22.02.2021 16:15, Patrick Giraudoux wrote:
>> Sorry to answer to myself, but the format was clearly incorrect in the
>> previous post. It should read, refering to the 1th day of the week:
>>
>> strptime(paste0(mydate,"-1"),format="%Y-%W-%u")
>>
>> It converts better, but with a NA on week 53
>>
>>> strptime(paste0(pays$year_week,"-1"),format="%Y-%W-%u")
>>    [1] "2020-01-06 CET"  "2020-01-13 CET"  "2020-01-20 CET" 
>> "2020-01-27 CET"
>>    [5] "2020-02-03 CET"  "2020-02-10 CET"  "2020-02-17 CET" 
>> "2020-02-24 CET"
>>    [9] "2020-03-02 CET"  "2020-03-09 CET"  "2020-03-16 CET" 
>> "2020-03-23 CET"
>> [13] "2020-03-30 CEST" "2020-04-06 CEST" "2020-04-13 CEST" 
>> "2020-04-20 CEST"
>> [17] "2020-04-27 CEST" "2020-05-04 CEST" "2020-05-11 CEST" 
>> "2020-05-18 CEST"
>> [21] "2020-05-25 CEST" "2020-06-01 CEST" "2020-06-08 CEST" 
>> "2020-06-15 CEST"
>> [25] "2020-06-22 CEST" "2020-06-29 CEST" "2020-07-06 CEST" 
>> "2020-07-13 CEST"
>> [29] "2020-07-20 CEST" "2020-07-27 CEST" "2020-08-03 CEST" 
>> "2020-08-10 CEST"
>> [33] "2020-08-17 CEST" "2020-08-24 CEST" "2020-08-31 CEST" 
>> "2020-09-07 CEST"
>> [37] "2020-09-14 CEST" "2020-09-21 CEST" "2020-09-28 CEST" 
>> "2020-10-05 CEST"
>> [41] "2020-10-12 CEST" "2020-10-19 CEST" "2020-10-26 CET" "2020-11-02 
>> CET"
>> [45] "2020-11-09 CET"  "2020-11-16 CET"  "2020-11-23 CET" "2020-11-30 
>> CET"
>> [49] "2020-12-07 CET"  "2020-12-14 CET"  "2020-12-21 CET" "2020-12-28 
>> CET"
>> [53] NA                "2021-01-04 CET"  "2021-01-11 CET" "2021-01-18 
>> CET"
>> [57] "2021-01-25 CET"  "2021-02-01 CET"  "2021-02-08 CET"
>> Warning message:
>> In strptime(paste0(pays$year_week, "-1"), format = "%Y-%W-%u") :
>>     (0-based) yday 369 in year 2020 is invalid
>>
>>
>> Any idea on how to handle this ?
>>
>>
>>
>>
>> Le 22/02/2021 à 15:26, Patrick Giraudoux a écrit :
>>>
>>> Dear all,
>>>
>>> I have a trouble trying to convert dates  given in character to POSIX.
>>> The date is expressed as a year then the week number e.g. "2020-01"
>>> (first week of 2020). I thought is can be converted as following:
>>>
>>> strptime(mydate,format="%Y-%W")
>>>
>>> %W refering to the week of the year as decimal number (00–53) using
>>> Monday as the first day of week (and typically with the first Monday
>>> of the year as day 1 of week 1), as indicated in the doc.
>>>
>>> However, I got this result, with the month fixed to 02 (february) and
>>> day 22 (only the year is  converted correctly):
>>>
>>> strptime(mydate,format="%Y-%W") [1] "2020-02-22 CET" "2020-02-22 CET"
>>> "2020-02-22 CET" "2020-02-22 CET" [5] "2020-02-22 CET" "2020-02-22
>>> CET" "2020-02-22 CET" "2020-02-22 CET" [9] "2020-02-22 CET"
>>> "2020-02-22 CET" "2020-02-22 CET" "2020-02-22 CET" [13] "2020-02-22
>>> CET" "2020-02-22 CET" "2020-02-22 CET" "2020-02-22 CET" [17]
>>> "2020-02-22 CET" "2020-02-22 CET" "2020-02-22 CET" "2020-02-22 CET"
>>> [21] "2020-02-22 CET" "2020-02-22 CET" "2020-02-22 CET" "2020-02-22
>>> CET" [25] "2020-02-22 CET" "2020-02-22 CET" "2020-02-22 CET"
>>> "2020-02-22 CET" [29] "2020-02-22 CET" "2020-02-22 CET" "2020-02-22
>>> CET" "2020-02-22 CET" [33] "2020-02-22 CET" "2020-02-22 CET"
>>> "2020-02-22 CET" "2020-02-22 CET" [37] "2020-02-22 CET" "2020-02-22
>>> CET" "2020-02-22 CET" "2020-02-22 CET" [41] "2020-02-22 CET"
>>> "2020-02-22 CET" "2020-02-22 CET" "2020-02-22 CET" [45] "2020-02-22
>>> CET" "2020-02-22 CET" "2020-02-22 CET" "2020-02-22 CET" [49]
>>> "2020-02-22 CET" "2020-02-22 CET" "2020-02-22 CET" "2020-02-22 CET"
>>> [53] "2020-02-22 CET" "2021-02-22 CET" "2021-02-22 CET" "2021-02-22
>>> CET" [57] "2021-02-22 CET" "2021-02-22 CET" "2021-02-22 CET"
>>>
>>> You'll find below a dump of "mydate" you can copy and paster if you
>>> need a try
>>>
>>> Any hint welcome...
>>>
>>> Best,
>>>
>>> Patrick
>>>
>>> mydate <-
>>> c("2020-01", "2020-02", "2020-03", "2020-04", "2020-05", "2020-06",
>>> "2020-07", "2020-08", "2020-09", "2020-10", "2020-11", "2020-12",
>>> "2020-13", "2020-14", "2020-15", "2020-16", "2020-17", "2020-18",
>>> "2020-19", "2020-20", "2020-21", "2020-22", "2020-23", "2020-24",
>>> "2020-25", "2020-26", "2020-27", "2020-28", "2020-29", "2020-30",
>>> "2020-31", "2020-32", "2020-33", "2020-34", "2020-35", "2020-36",
>>> "2020-37", "2020-38", "2020-39", "2020-40", "2020-41", "2020-42",
>>> "2020-43", "2020-44", "2020-45", "2020-46", "2020-47", "2020-48",
>>> "2020-49", "2020-50", "2020-51", "2020-52", "2020-53", "2021-01",
>>> "2021-02", "2021-03", "2021-04", "2021-05", "2021-06")
>>>
>>
>>
>>     [[alternative HTML version deleted]]
>>
>> ______________________________________________
>> R-help using r-project.org mailing list -- To UNSUBSCRIBE and more, see
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide 
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
>>


	[[alternative HTML version deleted]]



More information about the R-help mailing list