¿Cómo calcular la suma por grupo en R?

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

Publicación traducida automáticamente

Artículo escrito por skrg141 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *