[R-es] Transformar caracter con Año-Num semana del año a fecha
JCMld
jcm|d @end|ng |rom c@rmon@roch@@com
Sab Ene 9 18:05:24 CET 2021
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
Más información sobre la lista de distribución R-help-es