[R-es] Suma de columna en data.frame con restricciones
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]]