lbianchi
2014-Sep-01 20:17 UTC
[R-es] Armar clases con diferentes rangos en una tabla de frecuencias
¡Excelente Daniel! Es justo lo que estaba buscando, me imaginé que debería existir algo así, pero no conocía esa función. Muchas gracias, Lucas. ---- Activado lun, 01 sep 2014 12:25:35 -0700 daniel<daniel319 en gmail.com> escribió ---- library(zoo) ?rollapply ¿es eso lo que buscas? Daniel Merino El 1 de septiembre de 2014, 16:03, lbianchi <lbianchi en zoho.com> escribió: > 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: > > &gt; 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 > &gt; aggregate(tabla$eventos, list(tabla$fecha), sum) > > # otra forma > &gt; library(plyr) > &gt; 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]] > > _______________________________________________ > R-help-es mailing list > R-help-es en r-project.org > https://stat.ethz.ch/mailman/listinfo/r-help-es > -- Daniel [[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 [[alternative HTML version deleted]]