¿Cómo apilar columnas de DataFrame en R?

Un marco de datos es una estructura tubular compuesta de filas y columnas. Las columnas del marco de datos se pueden apilar juntas para dividir las columnas según los valores que contienen. 

Método 1: Usar el método de pila

La operación cbind() se utiliza para apilar las columnas del marco de datos. Inicialmente, las dos primeras columnas del marco de datos se combinan juntas usando el df[1:2]. A esto le sigue la aplicación del método  stack() aplicado en las dos últimas columnas.

El método de pila en base R se usa para transformar los datos disponibles en forma de columnas separadas dentro de un marco de datos o una lista en una sola columna. El método de pila produce un resultado en forma de marco de datos con dos columnas:

  • valores: el resultado producido al concatenar los vectores seleccionados en x.
  • ind: un factor que indica a partir de qué vector en x se originó la observación.

Sintaxis:

stack(x)

Argumentos: 

  • x: una lista o marco de datos para apilar

El marco de datos original se ve como:

     col1 semester quiz_sst quiz_maths
1    Yash        A        1          2
2    Yash        B        3          4
3 Mallika        A        4          6
4 Mallika        B        8          2
5  Muskan        A        9          7
6  Muskan        B        1          3

R

# creating a data frame
data <- data.frame(col1=c('Yash', 'Yash', 'Mallika', 
                          'Mallika', 'Muskan', 'Muskan'),
                   semester=c(rep(LETTERS[1:2],3)),
                   quiz_sst=c(1, 3, 4, 8, 9, 1),
                   quiz_maths=c(2, 4, 6, 2, 7, 3))
  
# binding the first two columns as it is 
# and stacking the third and fourth columns
data_mod <- cbind(data[1:2], stack(data[3:4]))
print(data_mod)

Producción

     col1 semester  values        ind
1     Yash        A      1   quiz_sst
2     Yash        B      3   quiz_sst
3  Mallika        A      4   quiz_sst
4  Mallika        B      8   quiz_sst
5   Muskan        A      9   quiz_sst
6   Muskan        B      1   quiz_sst
7     Yash        A      2 quiz_maths
8     Yash        B      4 quiz_maths
9  Mallika        A      6 quiz_maths
10 Mallika        B      2 quiz_maths
11  Muskan        A      7 quiz_maths
12  Muskan        B      3 quiz_maths

Método 2: Usando el método de fusión

El paquete reshape2 en R se puede usar para cambiar la estructura de los datos proporcionados y se puede instalar e importar al espacio de trabajo usando el siguiente comando: 

install.packages("reshape2")
library(reshape2)

El método melt de este paquete se puede usar para apilar columnas de marcos de datos. Se utiliza para remodelar y alargar el marco de datos. El método melt() tiene la siguiente sintaxis: 

melt(data, id.var , variable.name)

Argumentos: 

  • datos: el marco de datos para apilar columnas de
  • id.ar – Las columnas a usar como clave principal
  • variable.name: el nuevo nombre de columna para agregar

El marco de datos original se ve como:

    col1 semester quiz_sst quiz_maths
1    Yash        A        1          2
2    Yash        B        3          4
3 Mallika        A        4          6
4 Mallika        B        8          2
5  Muskan        A        9          7
6  Muskan        B        1          3

R

# importing the required library
library("reshape2")
  
# creating a data frame
data <- data.frame(col1=c('Yash', 'Yash', 'Mallika', 
                          'Mallika', 'Muskan', 'Muskan'),
                   semester=c(rep(LETTERS[1:2],3)),
                   quiz_sst=c(1, 3, 4, 8, 9, 1),
                   quiz_maths=c(2, 4, 6, 2, 7, 3))
  
# binding the first two columns as it is 
# and stacking the third and fourth columns
data_mod <- reshape2::melt(data, id.var = c('col1', 'semester'),
                           variable.name = 'quiz_marks')
print(data_mod)

Producción

[1] "Modified DataFrame"
     col1 semester quiz_marks value
1     Yash        A   quiz_sst     1
2     Yash        B   quiz_sst     3
3  Mallika        A   quiz_sst     4
4  Mallika        B   quiz_sst     8
5   Muskan        A   quiz_sst     9
6   Muskan        B   quiz_sst     1
7     Yash        A quiz_maths     2
8     Yash        B quiz_maths     4
9  Mallika        A quiz_maths     6
10 Mallika        B quiz_maths     2
11  Muskan        A quiz_maths     7
12  Muskan        B quiz_maths     3

Publicación traducida automáticamente

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