[R-es] Bucle for i generación de variables en un data.frame

Oscar Perpiñan Lamigueiro oscar.perpinan en upm.es
Mie Jun 15 14:57:01 CEST 2011


Otra forma equivalente, usando el método para fórmulas de aggregate:

##me invento un data.frame cualquiera:
df <- data.frame(x=rnorm(100),
y=rep(letters[1:5], 4), z=rep(letters[6:9], 5))

##sumamos en base a las categorías y, z
ag <- aggregate(x ~ y+z, data=df, FUN=sum)
##si no hubiera más variables puedes usar la notación dot:
ag <- aggregate(x ~ ., data=df, FUN=sum)

##Y para ponerlo en formato tabla (similar al resultado con tapply):
xtabs(x ~ y + z, data=ag)
xtabs(x ~ ., data=ag)

Saludos.

Oscar.

 El Tue, 14 Jun 2011 17:48:04 +0200
Javier Muñoz <javimunozlara en gmail.com> escribió:
> Es posible que lo quieras sea esto?:
> 
> recuento <- with(datos, tapply(total, list(identificador, codigo1),
> sum, na.rm = T))
> 
> El 14 de junio de 2011 17:29, J Manel S Griño <jmanelsg en gmail.com>
> escribió:
> 
> > Hola a tod en s,
> >
> > Llevo varios días intentando resolver esta duda y no hay manera.
> > Debo decir que és una de mis primeras incursiones en la
> > programación de bucles con R. Lo que yo quiero es añadir una
> > columna nueva al data.frame "recuentos" para cada incremento en
> > "datos$codigo1" con el resultado de la suma de los valores de
> > "datos$total" para cada cambio en "datos$identificador". Mi
> > problema es que no sé cómo ordenarle que cada ariable contenga el
> > número de iteració "i".
> >
> > for (i in 1:max(datos$codigo1,na.rm=T))
> > recuento$variablenueva.*i*
> >
> > <-tapply(subset(datos$total,datos$codigo1==i),subset(dagot$identificador,datos$codigo1==i),sum,na.rm=T)
> >
> >
> > También estoy abierto a otras soluciones que me ahorren las más de
> > 300 líneas de código que tendria que escribir para recoger todas las
> > posibilidades [max(datos$codigo1,na.rm=T)>350 por ahora...].
> >
> > Muchas gracias!
> >
> > Saludos,
> >
> > Manel.
> >
> >        [[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]]
> 



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