Agrupar data.table por varias columnas en R

En este artículo, discutiremos cómo agrupar data.table por varias columnas en el lenguaje de programación R.

El paquete data.table se puede usar para trabajar con tablas de datos y subconjuntos y organización de datos. Se puede descargar e instalar en el espacio de trabajo con el siguiente comando: 

library(data.table)

La columna en un índice específico se puede extraer utilizando el subconjunto de lista, es decir, [, operador. La nueva columna se puede agregar en el segundo argumento asignado a una función predefinida o definida por el usuario definida sobre un conjunto de columnas de data.table. El argumento by se puede agregar para agrupar los datos usando un conjunto de columnas de la tabla de datos. El método list() se puede usar para especificar un conjunto de columnas de data.table para agrupar los datos. 

Ejemplo: Agrupar data.table por varias columnas

R

library(data.table)
  
# creating first data frame
data_frame <- data.table(col1 = rep(LETTERS[1:3],each=2),
                  col2 = c(5:10),
                  col3 = c(TRUE,FALSE)
                  )
  
print ("Original DataFrame")
print (data_frame)
  
# group by col1,col3
data_mod <- data_frame[ , count:=sum(col2), 
                       by = list(col1,col3)]  
  
# print modified data frame
print ("Modified DataFrame") 
print(data_mod)                                        

Producción:

[1] "Original DataFrame"
   col1 col2  col3 
1:    A    5  TRUE 
2:    A    6 FALSE 
3:    B    7  TRUE 
4:    B    8 FALSE 
5:    C    9  TRUE 
6:    C   10 FALSE 
[1] "Modified DataFrame" 
   col1 col2  col3 count 
1:    A    5  TRUE     5 
2:    A    6 FALSE     6 
3:    B    7  TRUE     7 
4:    B    8 FALSE     8 
5:    C    9  TRUE     9 
6:    C   10 FALSE    10

En el ejemplo anterior, dado que ninguno de los grupos es igual, los nuevos valores de «recuento» de la columna son equivalentes a los valores de col2. 

En caso de que existan columnas pertenecientes a los mismos grupos, se genera la suma correspondiente a cada columna.

Ejemplo:  Agrupar data.table por varias columnas

R

library(data.table)
  
# creating first data frame
data_frame <- data.table(col1 = rep(LETTERS[1:3],each=2),
                         col2 = c(1:6),
                         col3 = TRUE
                        )
  
print ("Original DataFrame")
print (data_frame)
  
# group by col1,col3
data_mod <- data_frame[ , count:=sum(col2), 
                       by = list(col1,col3)]  
  
# print modified data frame
print ("Modified DataFrame") 
print(data_mod)

Producción:

[1] "Original DataFrame" 
   col1 col2 col3 
1:    A    1 TRUE 
2:    A    2 TRUE 
3:    B    3 TRUE 
4:    B    4 TRUE 
5:    C    5 TRUE 
6:    C    6 TRUE 
[1] "Modified DataFrame" 
   col1 col2 col3 count 
1:    A    1 TRUE     3 
2:    A    2 TRUE     3 
3:    B    3 TRUE     7 
4:    B    4 TRUE     7 
5:    C    5 TRUE    11 
6:    C    6 TRUE    11

La agrupación de datos también se puede realizar utilizando todas las columnas de data.table, como se indica en el siguiente fragmento de código.

Ejemplo: Agrupar data.table por varias columnas

R

library(data.table)
  
# 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)
  
# group by col1,col3
data_mod <- data_frame[ , count:=sum(col2), 
                       by = list(col1,col2,col3)]  
  
# print modified data frame
print ("Modified DataFrame") 
print(data_mod)

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 
[1] "Modified DataFrame" 
col1 col2 col3 count 
1:    A    1    1     1 
2:    A    1    1     1 
3:    B    3    1     3 
4:    B    4    1     4 
5:    C    5    1     5 
6:    C    6    1     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 *