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

Griera-yandex gr|er@ @end|ng |rom y@ndex@com
Dom Ene 10 00:06:41 CET 2021


Muchas gracies, Juan. 

Funciona a la perfección:

DADES_UE$year_week = ISOweek2date (paste0 (str_replace(year_week,"-","-W"),"-1"))

Salud!

On Sat, 9 Jan 2021 22:30:52 +0000 (UTC)
jose luis <pepeceb using yahoo.es> wrote:

>  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
>   



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