[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