reshape2 es un paquete R escrito por Hadley Wickham que facilita la transformación de datos entre los formatos ancho y largo. Los datos anchos tienen una columna para cada variable, mientras que esto no es obligatorio en los datos largos.
Conversión de ancho a largo
A veces se le puede pedir que dé forma a datos amplios en un formato largo. La función fundir en $0027reshape2$0027 realiza esta tarea.
La primera línea de código de abajo carga la biblioteca, mientras que la segunda línea funde los datos en el formato largo. Los argumentos que deben especificarse se exponen a continuación:
- Argumento «id.vars»: Especifica las variables que deben ser retenidas y no divididas
- Argumento «medir.vars»: Representa las columnas de origen
- Argumento «nombre.de.la.variable»: Representa la columna de destino que identificará las variables originales de las que proceden los valores
- Argumento «valor.nombre»: Representa los valores, que en nuestros datos son las notas del examen
Los datos resultantes se almacenan en un nuevo marco de datos, $0027df_long$0027. La tercera línea de código que aparece a continuación imprime este conjunto de datos resultantes, que ahora contiene 12 observaciones de 4 variables.
1234567library(reshape2)df_long <- melt(df_wide, id.vars=c("Rollno", "name"), measure.vars=c("math", "science", "english" ), variable.name="subject", value.name="marks")df_long
{r}
Salida:
1234567891011121314| Rollno | nombre | sujeto | marcas ||--------- |------- |--------- | |------- || 1. Nombre 1. Matemáticas 80. 2. Nombre 2. Matemáticas 65. 3. Nombre 3. Matemáticas 45. 4. Nombre 4. Matemáticas 95. 1. Nombre 1. Ciencia 72. 2. Nombre 2. Ciencia 80. 3. Name3 | science | 54 || 4 | Name4 | science | 73 || 1 | Name1 | english | 77 || 2 | Name2 | english | 71 || 3 | Name3 | english | 67 || 4 | Name4 | english | 70 |
Conversión de largo a ancho
En la sección anterior, creamos datos largos a partir de datos amplios. Para volver a convertir los datos largos a un formato ancho, podemos utilizar la función cast . Hay muchas funciones de casting, pero usaremos la función dcast porque se usa para los marcos de datos.
Las líneas de código de abajo realizarán esta conversión.
12data_wide <- dcast(df_long, Rollno + nombre ~ sujeto, valor.var="marcas")data_wide
{r}
Salida:
123456| | Rollno | nombre | matemáticas | ciencia || inglés ||||||||||||||||||||||| || 1 | 1 | 1 | Nombre1 | 80 | 72 | 77 || 2 | 2 | Nombre2 | 65 | 80 | 71 | 3 | 3 | Nombre3 | 45 | 54 | 67 || 4 | 4 | Nombre4 | 95 | 73 | 70 |