[R-es] Suma de columna en data.frame con restricciones
Carlos Ortega
cof en qualityexcellence.es
Dom Jul 23 22:45:55 CEST 2017
Hola,
Esas son diferentes opciones.
Si tu conjunto es muy grande, las opciones de dplyr, sqldf y especialmente
data.table son por las que optaría...
#-----------------------------------------
> # Opcion 1
> aggregate(frec ~ edad + Sexo, data = df, FUN = sum)
edad Sexo frec
1 10 1 150
2 12 1 125
3 15 1 342
4 10 2 156
5 12 2 308
6 15 2 174
>
> # Opcion 2
> library(dplyr)
> res_out <- df %>%
+ group_by(edad, Sexo) %>%
+ summarise( res = sum(frec))
> res_out
# A tibble: 6 x 3
# Groups: edad [?]
edad Sexo res
<dbl> <dbl> <dbl>
1 10 1 150
2 10 2 156
3 12 1 125
4 12 2 308
5 15 1 342
6 15 2 174
>
> # Opcion 3
> library(data.table)
> DT <- as.data.table(df)
> DT[, mi_sum := sum(frec), by=c('Sexo','edad')]
> DT
Sexo edad frec mi_sum
1: 1 10 150 150
2: 1 12 125 125
3: 1 15 147 342
4: 2 12 123 308
5: 2 10 156 156
6: 2 15 174 174
7: 2 12 185 308
8: 1 15 195 342
>
> # Opcion 4
> library(sqldf)
> res_sql <- sqldf("select Sexo, edad, sum(frec) as sumfrec from df group
by Sexo,edad")
> res_sql
Sexo edad sumfrec
1 1 10 150
2 1 12 125
3 1 15 342
4 2 10 156
5 2 12 308
6 2 15 174
>
#-----------------------------------------
Saludos,
Carlos Ortega
www.qualityexcellence.es
El 23 de julio de 2017, 21:13, Clei Y <cleiver_yam en hotmail.com> escribió:
> Buen día,
>
>
> Tengo un data frame con los siguientes datos
>
>
>
>
> > Sexo<-c(1,1,1,2,2,2,2,1)
> > edad<-c(10,12,15,12,10,15,12,15)
> > frec<-c(150,125,147,123,156,174,185,195)
> > df<-data.frame(Sexo,edad,frec)
>
>
> Quisiera saber como elaborar una tabla en la cual seleccione el sexo y la
> edad y R realice la suma de la frecuencia debido a que la lista original
> incluye miles de observaciones y existen muchas observaciones con mismo
> sexo, misma edad y es necesario realizar la suma de las frecuencias.
>
>
> Saludos y gracias
>
> [[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
>
--
Saludos,
Carlos Ortega
www.qualityexcellence.es
[[alternative HTML version deleted]]
Más información sobre la lista de distribución R-help-es