Hola Clei, ya te han dado varias opciones ... solo para aportar un detalle que te puede servir, si en la opcion 3 de Carlos Ortega (donde usa data.table), NO ASIGNAS la suma a un nuevo objeto, es decir, no usas el operador ":=" para asignar el resultados a la nueva columna "mi_sum" como hace Carlos, obtienes una tabla de resultados limpia, sin los datos originales, solo con las sumas agrupadas, por ejemplo:

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)
library(data.table)
df <- as.data.table(df)
sumXsexoedad <- df[, sum(frec), by=.(Sexo,edad)]
> sumXsexoedad
   Sexo edad  V1
1:    1   10 150
2:    1   12 125
3:    1   15 342
4:    2   12 308
5:    2   10 156
6:    2   15 174

Suerte !!!

Eric.






On 07/23/2017 04:45 PM, Carlos Ortega wrote:
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 = "" 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_...@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@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es




-- 
Forest Engineer
Master in Environmental and Natural Resource Economics
Ph.D. student in Sciences of Natural Resources at La Frontera University
Member in AguaDeTemu2030, citizen movement for Temuco with green city standards for living

Nota: Las tildes se han omitido para asegurar compatibilidad con algunos lectores de correo.
_______________________________________________
R-help-es mailing list
R-help-es@r-project.org
https://stat.ethz.ch/mailman/listinfo/r-help-es

Responder a