En este artículo, vamos a ver cómo calcular la suma por grupo en el lenguaje de programación R.
Datos para demostración
R
# creating data frame df <- data.frame(Sub = c('Math', 'Math', 'Phy', 'Phy', 'Phy', 'Che', 'Che'), Marks = c(8, 2, 4, 9, 9, 7, 1), Add_on = c(3, 1, 9, 4, 7, 8, 2)) # view dataframe df
Producción:
Sub Marks Add_on Math 8 3 Math 2 1 Phy 4 9 Phy 9 4 Phy 9 7 Che 7 8 Che 1 2
Método 1: Usar el método de agregado() en Base R
La función de agregado() se utiliza para obtener las estadísticas de resumen de los datos por grupo. Las estadísticas incluyen media, min, sum. máximo, etc.
Sintaxis: agregado (marco de datos $columna_agregada, lista (marco de datos $columna_grupo), FUN)
dónde
- dataframe es el dataframe de entrada.
- added_column es la columna que se agregará en el marco de datos.
- group_column es la columna que se agrupará con FUN.
- FUN representa suma/media/mín/máx.
R
# creating data frame df <- data.frame(Sub = c('Math', 'Math', 'Phy', 'Phy', 'Phy', 'Che', 'Che'), Marks = c(8, 2, 4, 9, 9, 7, 1), Add_on = c(3, 1, 9, 4, 7, 8, 2)) aggregate(df$Marks, list(df$Sub), FUN=sum) aggregate(df$Add_on, list(df$Sub), FUN=sum)
Producción:
Group.1 x Che 8 Math 10 Phy 22 Group.1 x Che 10 Math 4 Phy 20
Método 2: Usar el paquete dplyr()
función group_by() seguida de la función summarise( ) con una acción apropiada para realizar.
R
library(dplyr) df %>% group_by(Sub) %>% summarise_at(vars(Marks), list(name = sum))
Producción:
Sub name Che 8 Math 10 Phy 22
Método 3: Usando data.table
Paquete data.table para calcular la suma de puntos anotados por un equipo.
R
library(data.table) # convert data frame to data table setDT(df) # find sum of points scored by sub df[ ,list(sum=sum(Marks)), by=Sub]
Producción:
Sub sum Math 10 Phy 22 Che 8