[R-es] Armar clases con diferentes rangos en una tabla de frecuencias

lbianchi lbianchi en zoho.com
Lun Sep 1 21:03:05 CEST 2014


Hola amigos:
  el problema que se me presenta no creo que resulta muy difícil, pero no he logrado resolverlo.

Digamos que tengo una tabla con dos columnas, "Fecha" y "Eventos". En la columna Fecha, tengo el año y en la columna Eventos el número de ocurrencia de determinado suceso en dicho año.
Por ejemplo:

> head(tabla)
  fecha eventos
1  1971       1
2  1972       8
3  1973       1
4  1974       7
5  1975       7
6  1976       2

Puedo tener más de una fila por cada año, por lo que si quiero tener la frecuencia de Eventos por año, encontré dos formas de obtenerla:
# una forma
> aggregate(tabla$eventos, list(tabla$fecha), sum)

# otra forma
> library(plyr)
> ddply(tabla,.(fecha), summarize, freq=sum(eventos))

lo cual me devuelve algo como:

    fecha freq
1   1971   18
2   1972   31
3   1973   22
4   1974   36
5   1975    7
6   1976    2
7   1977    2
8   1978    9
...


Hasta aquí todo bien, pero se me presentan dos problemas (o un mismo problema dividido en dos partes):

1- Con el código de arriba obtengo un valor por año, pero yo necesito ese valor para diferentes rangos de años, por ejemplo, cada 5, 10, 15, 20 años.

2- A la vez, el punto de inicio para armar estas clases tendría que ir variando. Por ejemplo, agrupando cada 5 años, podría tener el número de eventos entre 1970-1974, 1975-1979, 1980-1984, etc. pero también necesitaría poder tener el número de eventos en los períodos 1971-1975, 1976-1980, 1981-1985, etc.  y luego en los períodos 1972-1976, 1977-1981, 1982-1986, etc.

Aquí puse sólo una porción de la tabla, pero el número de años de la tabla completa puede ser de alrededor de 500 o tal vez un poco más.
Todas las opciones que encontré para agrupar los datos son en función de valores ya contenidos en la tabla, pero no encontré ninguna manera de hacerlo más "dinámico" como lo que yo necesito.

¿Podría hacer algo con cut()? lo estuve intentando, pero no logré nada.

Cualquier sugerencia, me será de gran ayuda.

Muchas Gracias,

Lucas.









	[[alternative HTML version deleted]]



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