JCMld
2021-Jan-09 17:05 UTC
[R-es] Transformar caracter con Año-Num semana del año a fecha
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 en r-project.org> En nombre de Griera-yandex Enviado el: sábado, 9 de enero de 2021 16:27 Para: r-help-es en 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 en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es
jose luis
2021-Jan-09 22:30 UTC
[R-es] Transformar caracter con Año-Num semana del año a fecha
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 en 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 en r-project.org> En nombre de Griera-yandex Enviado el: sábado, 9 de enero de 2021 16:27 Para: r-help-es en 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 en r-project.org https://stat.ethz.ch/mailman/listinfo/r-help-es _______________________________________________ R-help-es mailing list R-help-es en 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>