[R-es] Transformar caracter con Año-Num semana del año a fecha

jose luis pepeceb @end|ng |rom y@hoo@e@
Sab Ene 9 23:30:52 CET 2021


 HolaOtra forma. 
Tras convertir la fecha en factor y separarla en año y semana con "separate", volvemos a unir año y semana.













    En sábado, 9 de enero de 2021 18:05:50 CET, JCMld <jcmld using carmonarocha.com> escribió:  
 
 El problema es que parece que hay un desfase de 1 semana y empieza
devolviéndote la fecha del primer lunes del año como la de la primera semana
y en realidad es de la segunda.

Una posible solución sería utilizar el paquete ISOweek. Por ejemplo,
suponiendo que el archivo descargado está en el directorio de trabajo y que
se llama "convid.csv" sería algo así:

library(ISOweek)
library(stringr)

a<-read.csv("covid.csv")
a$fecha<-ISOweek2date(paste0(str_replace(a$year_week,"-","-W"),"-1"))

Esta función requiere que el formato sea del estilo "2020-W01-1", por eso
previamente sustituyo el "-" por "-W".

Al concatenarle el "-1" significa que te devolverá siempre la fecha del
primer día de la semana, o sea, del lunes. Esto significa que para la
primera semana del 2020 te va a devolver la fecha "2019-12-30", ya que el
año empezó en miércoles. Y para la semana 53, te devuelve 2020-12-28.

La librería stringr es necesaria para el str_replace.

Espero te ayude.

Saludos,
Juan




-----Mensaje original-----
De: R-help-es <r-help-es-bounces using r-project.org> En nombre de Griera-yandex
Enviado el: sábado, 9 de enero de 2021 16:27
Para: r-help-es using r-project.org
Asunto: [R-es] Transformar caracter con Año-Num semana del año a fecha

Hola a todos:

A ver si alguien me puede ayudar a leer los archivos Covid del European
Centre for Disease Prevention and Control:

https://www.ecdc.europa.eu/en/publications-data/data-national-14-day-notific
ation-rate-covid-19

Ahora la fecha está como año y número de semana en formato ISO. Por ejemplo:

"2020-01" (1a semana del 2020)
"2020-02" (2a semana del 2020).
"2020-53" (última semana del 2020).

Intento transformarla como una fecha, pero siempre devuelve el "2020-01-09":

as.Date ("2020-01", "%Y-%W")            # [1] "2020-01-09"
as.Date ("2020-02", "%Y-%W")            # [1] "2020-01-09"
as.Date ("2020-03", "%Y-%W")            # [1] "2020-01-09"
as.Date ("2020-53", "%Y-%W")            # [1] "2020-01-09"

Si le añado el día de la semana, lo hace bien hasta el "2020-53":

as.Date (paste0 ("2020-01", "-1"), "%Y-%W-%w")        # [1] "2020-01-06
as.Date (paste0 ("2020-52", "-1"), "%Y-%W-%w")        # [1] "2020-12-28"
as.Date (paste0 ("2020-53", "-1"), "%Y-%W-%w")        # [1] NA

Para "2020-53" da el error: In strptime(x, format, tz = "GMT") :
  (0-based) yday 369 in year 2020 is invalid

Alguien me pude decir como solucionarlo?

Muchas gracias y saludos.

_______________________________________________
R-help-es mailing list
R-help-es using r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es

_______________________________________________
R-help-es mailing list
R-help-es using r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es
  
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20210109/7a2f8c37/attachment-0001.html>

------------ próxima parte ------------
A non-text attachment was scrubbed...
Name: 1610231411445blob.jpg
Type: image/png
Size: 36445 bytes
Desc: no disponible
URL: <https://stat.ethz.ch/pipermail/r-help-es/attachments/20210109/7a2f8c37/attachment-0001.png>


Más información sobre la lista de distribución R-help-es