[R-es] Asignar número de semana

miguel.angel.rodriguez.muinos en sergas.es miguel.angel.rodriguez.muinos en sergas.es
Mar Ene 10 09:04:55 CET 2017


Hola Rubén.

El tema de trabajar con fechas no es nada trivial y tiene su importancia.

Cuándo empieza una semana y/o cuál es la primera semana del año (por
ejemplo) son aspectos que hay que tener bien definidos a la hora de
trabajar con fechas.

Te recomiendo que le eches un ojo a la norma ISO 8601, que arroja
bastante luz sobre este asunto.
https://es.wikipedia.org/wiki/ISO_8601
http://www.iso.org/iso/home/store/catalogue_tc/catalogue_detail.htm?csnumber=40874

En R hay bastante material al respecto (por darte una referencia, el
paquete ISOweek y similares).

Desde mi punto de vista, el quiz de la cuestión esta en la función
as.Date() y el parámetro "format". Yo empezaría por ahí.

Por ponerte un ejemplo concreto, te comentaré como he resuelto el
cálculo de la semana epidemiológica:
Para no liarte con definiciones simplemente has de saber que, en la
práctica, la primera semana epidemiológica de un año es aquella que
contiene el primer jueves de ese año. Partiendo de esa premisa es
sencillo realizar una función que calcule el número de la semana
epidemiológica de una fecha dada

# Cálculo de la semana Epidemiológica (semepi)
     fecha=as.Date(datos.$fecha,format="%d/%m/%Y")
     diafecha=as.numeric(format(fecha,format="%w"))
     diferencia=4-diafecha
     Jueves=fecha+diferencia
     if (diferencia<4)
        {
        semepi=ceiling(as.numeric(format(Jueves,format="%j"))/7)
        } else semepi=ceiling(as.numeric(format(Jueves,format="%j"))/7)-1
     if (semepi==0)
semepi=ceiling(as.numeric(format(Jueves-7,format="%j"))/7)
     semepi
# FIN

Si modificas esto según tus necesidades, puedes calcular la semana en
función del día que te interese que creo que es tu caso.

Un saludo,

--
Miguel Ángel Rodríguez Muíños
Asesoramento en Informática
Dirección Xeral de Saúde Pública
Consellería de Sanidade
Xunta de Galicia
http://dxsp.sergas.es



El 09/01/2017 a las 22:51, Rubén Coca escribió:
> Hola a todos.
> Estoy tratando de asignar el número de semana del año a una serie de fechas
> y me encuentro con que el paquete lubridate considera como día de inicio de
> la semana el domingo en lugar del lunes.
> Lo que se me ha ocurrido es crear una tabla auxiliar de fechas con los
> campos: 'Fecha desde', 'Fecha hasta' y 'Semana ISO' tal que así:
> 'Fecha desde', 'Fecha hasta', 'Semana ISO'
> 28/12/2015, 03/01/2016, 53
> 04/01/2016, 10/01/2016, 1
> 11/01/2016, 17/01/2016, 2
> 18/01/2016, 24/01/2016, 3
> Pero lo que es muy fácil con Excel (=buscarv(fecha;tabla;3;1)), con R no sé
> como hacerlo.
>
> ¿Alguna idea, sugerencia o forma alternativa de encarar el problema?
>
> Gracias por vuestra ayuda.
> Rubén
>
> [[alternative HTML version deleted]]
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es


________________________________

Nota: A información contida nesta mensaxe e os seus posibles documentos adxuntos é privada e confidencial e está dirixida únicamente ó seu destinatario/a. Se vostede non é o/a destinatario/a orixinal desta mensaxe, por favor elimínea. A distribución ou copia desta mensaxe non está autorizada.

Nota: La información contenida en este mensaje y sus posibles documentos adjuntos es privada y confidencial y está dirigida únicamente a su destinatario/a. Si usted no es el/la destinatario/a original de este mensaje, por favor elimínelo. La distribución o copia de este mensaje no está autorizada.

See more languages: http://www.sergas.es/aviso-confidencialidad



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