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