Dplyr – Groupby en múltiples columnas usando nombres de variables en R

El método group_by() se utiliza para agrupar los datos contenidos en el marco de datos en función de las columnas especificadas como argumentos para la llamada a la función. La función group_by() toma como argumento el ancho y todos los métodos que deben aplicarse en la agrupación especificada en todas las columnas del marco de datos. 

Sintaxis:

group_by(col1, col2,..)

A esto le sigue la aplicación de la función resume(), que se utiliza para generar estadísticas de resumen sobre la columna aplicada. La columna se renombra con el nuevo nombre especificado. A la nueva columna se le puede asignar cualquiera de los métodos agregados como mean(), sum(), etc. Veamos primero un enfoque más simple y apliquemos groupby a solo una columna.

Ejemplo: Groupby en una sola columna usando nombres de variables

R

library(data.table)
library(dplyr)
  
# creating first data frame
data_frame <- data.table(col1 = rep(LETTERS[1:3],each=2),
                         col2 = c(1,1,3,4,5,6),
                         col3 = 1
                        )
  
print ("Original DataFrame")
print (data_frame)
  
# deciding the column to group by
grp <- c('col1')
  
# calculating mean of col2 based on col1 group
data_frame %>% 
  group_by(across(all_of(grp))) %>% 
  summarize(mean_col2 = mean(col2))

Producción

[1] "Original DataFrame" 
col1 col2 col3 
1:    A    1    1 
2:    A    1    1 
3:    B    3    1 
4:    B    4    1 
5:    C    5    1 
6:    C    6    1 
# A tibble: 3 x 2   
col1  mean_col2   
<chr>     <dbl> 
1 A           1   
2 B           3.5 
3 C           5.5

Como hay tres grupos, A, B y C, se calcula la media para cada uno de estos tres grupos. 

Ejemplo: Aplicar group_by sobre múltiples columnas usando el nombre de la variable

R

library(data.table)
library(dplyr)
  
# creating first data frame
data_frame <- data.table(col1 = rep(LETTERS[1:3],each=2),
                         col2 = c(1,1,3,4,5,6),
                         col3 = 1
                        )
  
print ("Original DataFrame")
print (data_frame)
  
# deciding the column to group by
grp <- c('col1','col2')
  
# calculating mean of col2 based on col1 group
data_frame %>% 
  group_by(across(all_of(grp))) %>% 
  summarize(mean_col2 = sum(col2))

Producción

# A tibble: 5 x 3 
# Groups:   col1 [3]   
col1   col2 mean_col2   
<chr> <dbl>     <dbl> 
1 A         1         2 
2 B         3         3 
3 B         4         4 
4 C         5         5 
5 C         6         6

Publicación traducida automáticamente

Artículo escrito por mallikagupta90 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 *