La reestructuración de datos en R consiste en organizar filas y columnas a tu manera para usarlas según tus necesidades. Por lo general, los datos se manejan como un data frame en R para procesarlos con funciones como "rbind()", "cbind()", etc.
En este proceso, reorganizas los datos en filas y columnas. Reestructurar significa darle a los datos el formato específico que necesitas para seguir trabajando con ellos.
Creación de tus datos
Vamos a crear un generador de números aleatorios y a construir columnas para concatenarlas en un data frame. También añadiremos un id para usarlo más adelante. "set.seed(123)" se utiliza para producir números aleatorios y garantizar que cualquiera que ejecute el código obtenga la misma muestra. Creamos tres variables: colm1, colm2, colm3. Con "sample()" generamos valores del 1 al 15 con posible repetición. El data frame almacena los datos en forma de tabla y se le añade un id, que es un número único.
set.seed(123)
N <-15
colm1 <- sample(1:15, N, replace=TRUE)
colm2 <- sample(1:15, N, replace=TRUE)
colm3 <- sample(1:15, N, replace=TRUE)
df_Temp <- data.frame(colm1, colm2,colm3)
df_Temp$id<-seq(nrow(df_Temp))
df_TempCon la tecnología de
El código anterior devuelve la siguiente salida, con tres columnas llamadas "colm1", "colm2", "colm3" y un id del 1 al 15. Los valores de cada columna toman números del 1 al 15: algunos se repiten y otros pueden no aparecer.
colm1 colm2 colm3 id
15111411553233431411144391510121162977695811131295315104810111410131267713910914109915Con la tecnología de
Función cbind
Uso: combina vectores, matrices y data frames por columnas. Parámetros: cbind(v1, v2): v1 y v2 pueden ser vectores, matrices o data frames.
Veamos un ejemplo práctico de combinación.
Se puede seleccionar id con "df_Temp[,4]", mientras que "df_Temp[,2]" selecciona "colm2" de df_Temp. Ambos actúan como parámetros de "cbind()" y se guardan en la variable "cbindexample". Después, los nombres de las columnas pueden cambiarse con "colnames()", que recibe el objeto y un vector con los nuevos nombres, p. ej., "newid", "new_colm2".
cbindexample<-cbind(df_Temp[,4],df_Temp[,2])
colnames(cbindexample)<- c('newid','new_colm2')
cbindexampleCon la tecnología de
El código anterior produce la siguiente salida: has unido dos columnas (id y column2) con la función "cbind" para crear un nuevo data frame. Además, el nombre de la columna "colm2" ha pasado a ser "new_colm2" e "id" ha pasado a "newid".
Uso: rbind combina vectores, matrices o data frames por filas. Parámetros: rbind(v1, v2): v1 y v2 pueden ser vectores, matrices o data frames.
Vamos a crear un nuevo vector llamado "new_vector" y a combinarlo con "cbindexample" (de 2 columnas) usando "rbind". Ambos se concatenan y se guardan en "rbindexample".
new_vector<- c(16,15)
rbindexample<- rbind(cbindexample,new_vector)
rbindexampleCon la tecnología de
El código anterior genera la salida de abajo, donde se añade una nueva fila con los valores 16 y 15 en "newid" y "new_colm2", respectivamente.
newid new_colm2
1112533411596127989913103118121013714101591615Con la tecnología de
Función melt:
Uso: la función melt convierte un objeto a un estado "fundido": toma varias columnas y las transforma en una única columna. Parámetros: melt(data, …, na.rm=FALSE/TRUE, value.name=”value” ) data: entrada que vas a fundir. ...: argumentos adicionales que se pasan. na.rm: sirve para convertir valores ausentes explícitos en ausentes implícitos. value.name: nombre de la columna donde se almacenarán los valores. Veamos cómo "fundir" los datos usando la variable id para obtener una columna con el nombre de la columna original y su valor:
Importa la librería "reshape2" con "library()" y usa melt para combinar las columnas colm1, colm2, colm3 de "df_Temp" en un único lugar llamado "variable" en función de la variable "id".
library(reshape2)
molted=melt(df_Temp,id.vars=c("id"))
moltedCon la tecnología de
La salida anterior muestra que, al fundir los datos de colm1, colm2 y colm3 según la variable id, todo se combina en una columna llamada "variable" y los valores quedan en la columna "value".
Función dcast:
Uso: cuando tienes un conjunto de datos fundido, puedes devolverlo a su formato original con esta función. Parámetros: dcast(data, id_variable~value) data: datos fundidos que se quieren convertir a su forma original. id_variable: una o varias columnas usadas para fundir los datos de otras columnas en una sola. ~: tras este signo, se indican los valores o la nueva columna fundida del dataset resultante.
A continuación puedes ver el código donde se importa "reshape2" con "library()" y "dcast()" recibe como primer parámetro los datos resultantes de "melt()" y, tras la "~", el id a partir del cual se reconstruyen las columnas originales.
colm1 1515314310261154146910
colm2 115311912991338107109
colm3 1434141117512151013799
id 123456789101112131415Con la tecnología de
Observa que el data frame, que tenía forma de 15 filas y 4 columnas, pasa a tener 4 filas y 15 columnas tras la transposición.
Enhorabuena
¡Enhorabuena, has llegado al final de este tutorial!
En este tutorial has visto distintas funciones de R como "rbind()", "cbind()", además de "melt()", "dcast()" y, por último, la función de transposición.
Descubre cómo acceder a los datos de tu marco de datos con el subconjunto. Aprende a hacer subconjuntos utilizando paréntesis o la función subconjunto() de R.
Averigua cómo importar datos a R, incluidos archivos CSV, JSON, Excel, HTML, bases de datos, SAS, SPSS, Matlab y otros, utilizando los conocidos paquetes de R.
En este tutorial, aprenderás a ordenar utilizando order(). Veremos cómo ordenar vectores utilizando distintos parámetros, ordenar dataframes y mucho más.
La reestructuración de datos en R consiste en organizar filas y columnas a tu manera para usarlas según tus necesidades. Por lo general, los datos se manejan como un data frame en R para procesarlos con funciones como "rbind()", "cbind()", etc.
En este proceso, reorganizas los datos en filas y columnas. Reestructurar significa darle a los datos el formato específico que necesitas para seguir trabajando con ellos.
Creación de tus datos
Vamos a crear un generador de números aleatorios y a construir columnas para concatenarlas en un data frame. También añadiremos un id para usarlo más adelante. "set.seed(123)" se utiliza para producir números aleatorios y garantizar que cualquiera que ejecute el código obtenga la misma muestra. Creamos tres variables: colm1, colm2, colm3. Con "sample()" generamos valores del 1 al 15 con posible repetición. El data frame almacena los datos en forma de tabla y se le añade un id, que es un número único.
El código anterior devuelve la siguiente salida, con tres columnas llamadas "colm1", "colm2", "colm3" y un id del 1 al 15. Los valores de cada columna toman números del 1 al 15: algunos se repiten y otros pueden no aparecer.
Función cbind
Uso: combina vectores, matrices y data frames por columnas.
Parámetros: cbind(v1, v2): v1 y v2 pueden ser vectores, matrices o data frames.
Veamos un ejemplo práctico de combinación.
Se puede seleccionar id con "df_Temp[,4]", mientras que "df_Temp[,2]" selecciona "colm2" de df_Temp. Ambos actúan como parámetros de "cbind()" y se guardan en la variable "cbindexample". Después, los nombres de las columnas pueden cambiarse con "colnames()", que recibe el objeto y un vector con los nuevos nombres, p. ej., "newid", "new_colm2".
El código anterior produce la siguiente salida: has unido dos columnas (id y column2) con la función "cbind" para crear un nuevo data frame. Además, el nombre de la columna "colm2" ha pasado a ser "new_colm2" e "id" ha pasado a "newid".
Función rbind:
Uso: rbind combina vectores, matrices o data frames por filas.
Parámetros: rbind(v1, v2): v1 y v2 pueden ser vectores, matrices o data frames.
Vamos a crear un nuevo vector llamado "new_vector" y a combinarlo con "cbindexample" (de 2 columnas) usando "rbind". Ambos se concatenan y se guardan en "rbindexample".
El código anterior genera la salida de abajo, donde se añade una nueva fila con los valores 16 y 15 en "newid" y "new_colm2", respectivamente.
Función melt:
Uso: la función melt convierte un objeto a un estado "fundido": toma varias columnas y las transforma en una única columna.
Parámetros: melt(data, …, na.rm=FALSE/TRUE, value.name=”value” )
data: entrada que vas a fundir.
...: argumentos adicionales que se pasan.
na.rm: sirve para convertir valores ausentes explícitos en ausentes implícitos.
value.name: nombre de la columna donde se almacenarán los valores.
Veamos cómo "fundir" los datos usando la variable id para obtener una columna con el nombre de la columna original y su valor:
Importa la librería "reshape2" con "library()" y usa melt para combinar las columnas colm1, colm2, colm3 de "df_Temp" en un único lugar llamado "variable" en función de la variable "id".
La salida anterior muestra que, al fundir los datos de colm1, colm2 y colm3 según la variable id, todo se combina en una columna llamada "variable" y los valores quedan en la columna "value".
Función dcast:
Uso: cuando tienes un conjunto de datos fundido, puedes devolverlo a su formato original con esta función.
Parámetros: dcast(data, id_variable~value)
data: datos fundidos que se quieren convertir a su forma original.
id_variable: una o varias columnas usadas para fundir los datos de otras columnas en una sola.
~: tras este signo, se indican los valores o la nueva columna fundida del dataset resultante.
A continuación puedes ver el código donde se importa "reshape2" con "library()" y "dcast()" recibe como primer parámetro los datos resultantes de "melt()" y, tras la "~", el id a partir del cual se reconstruyen las columnas originales.
Puedes ver que los datos fundidos con "melt()" vuelven al conjunto original. Hay tres columnas con sus valores y el id en una columna aparte.
Función de transposición:
Uso: sirve para convertir filas en columnas y columnas en filas.
Parámetros: t(data), donde data es el data frame que quieres transponer.
Vamos a cambiar filas por columnas y viceversa usando la función de transposición. Se hace simplemente con "t(df_Temp)", como se muestra abajo.
El código anterior devuelve la siguiente salida:
Observa que el data frame, que tenía forma de 15 filas y 4 columnas, pasa a tener 4 filas y 15 columnas tras la transposición.
Enhorabuena
¡Enhorabuena, has llegado al final de este tutorial!
En este tutorial has visto distintas funciones de R como "rbind()", "cbind()", además de "melt()", "dcast()" y, por último, la función de transposición.
Si quieres aprender más sobre R, haz el curso Introduction to R de DataCamp y echa un vistazo a nuestro R Packages: A Beginner's Tutorial.
Referencias:
Funciones melt