[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