Procesamiento de datos sin procesar a datos ordenados en R

Los datos que se descargan de la web u otros recursos suelen ser difíciles de analizar. A menudo, es necesario realizar algún procesamiento o limpieza del conjunto de datos para prepararlo para un análisis posterior posterior, un modelo predictivo, etc. Este artículo analiza varios métodos en R para convertir el conjunto de datos sin procesar en datos ordenados.

Datos sin procesar

Un dato sin procesar es un conjunto de datos que se ha descargado de la web (o de cualquier otra fuente) y aún no se ha procesado. Los datos sin procesar no están listos para su uso en estadísticas. Necesita varias herramientas de procesamiento para estar listo para el análisis.

Ejemplo : A continuación se muestra la imagen de un conjunto de datos IRIS sin procesar . No tiene ninguna información sobre cuáles son los datos o qué representan. Esto se hará ordenando los datos.

Datos ordenados

Por otro lado, un conjunto de datos ordenados (también llamados datos cocidos) son los datos que tienen las siguientes características:

  • Cada variable medida debe estar en una columna.
  • Cada observación diferente de esa variable debe estar en una fila diferente.
  • Debe haber una tabla para cada “tipo” de variable.
  • Si hay varias tablas, deben incluir una columna en la tabla que permita vincularlas.

Ejemplo : a continuación se muestra la imagen de un conjunto de datos Tidy IRIS. Contiene valiosa información procesada como nombres de columnas. El proceso se explica más adelante.

Pasos en el procesamiento general de un conjunto de datos sin procesar en un conjunto de datos ordenado con ejemplo

  1. Cargando el conjunto de datos en R
    • El primer paso es obtener los datos para su procesamiento. Aquí los datos tomados son de los datos de IRIS .
    • En primer lugar, descargue los datos y conviértalos en un marco de datos en R.

      ##Provide the link of the dataset
      url < -"http:// archive.ics.uci.edu/ml/machine-learning-databases/iris/iris.data"
        
      ##download the data in a file iris.txt
      ##will be saved in the working directory
      download.file(url, "iris.txt")
        
      ##import the data in a dataframe
      d < -read.table("iris.txt", sep = ", ")
        
      ##Rename the columns
      colnames(d)< -c("s_len",
               "s_width",
               "p_len",
               "p_width",
               "variety")
  2. Creación de subconjuntos de filas y columnas
    • Ahora, si solo se requieren s_len (primera columna), p_len (tercera columna) y variedad (quinta columna) para el análisis, subdivida estas columnas y asigne los nuevos datos a un nuevo marco de datos.

      ##subsetting columns with column number
      d1 <- d[, c(1, 3, 5)]
    • La creación de subconjuntos también se puede hacer usando nombres de columna.

      ##subsetting columns with column names
      d1 <- d[, c("s_len", "p_len", "variety")]
    • Asimismo, si se requiere conocer las observaciones que sean de variedad “Iris-setosa” o tengan “sépalo de longitud menor a 5”.

      ##Subsetting the rows
      d2 <- d[(d$s_len < 5 | d$variety == "Iris-setosa"), ]

    Nota: El operador «$» se usa para crear un subconjunto de una columna.

  3. Ordenar el marco de datos por alguna variable

    Ordene el dataframe por longitud de pétalo usando el comando order.

    d3 < -d[order(d$p_len), ]
  4. Adición de nuevas filas y columnas

    Agregue una nueva columna con cbind() y agregue una nueva fila con rbind().

    ##Extract the s_width column of d
    sepal_width <- d$s_width
      
    ##Add the column to d1 dataframe.
    d1 <- cbind(d1, sepal_width)
  5. Obtener una visión general de los datos de un vistazo
    • Para obtener una descripción resumida de los datos procesados, llame al comando summary() en el marco de datos.

      summary(d)

      Salida “:

         s_len          s_width          p_len          p_width                 variety  
       Min.   :4.300   Min.   :2.000   Min.   :1.000   Min.   :0.100   Iris-setosa    :50  
       1st Qu.:5.100   1st Qu.:2.800   1st Qu.:1.600   1st Qu.:0.300   Iris-versicolor:50  
       Median :5.800   Median :3.000   Median :4.350   Median :1.300   Iris-virginica :50  
       Mean   :5.843   Mean   :3.054   Mean   :3.759   Mean   :1.199                       
       3rd Qu.:6.400   3rd Qu.:3.300   3rd Qu.:5.100   3rd Qu.:1.800                       
       Max.   :7.900   Max.   :4.400   Max.   :6.900   Max.   :2.500                       
      
    • Para obtener una descripción general como el tipo de cada variable, el número total de observaciones y sus primeros valores; use el comando str() .

      str(d)

      Salida :

      'data.frame':    150 obs. of  5 variables:
       $s_len  : num  5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
       $s_width: num  3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
       $p_len  : num  1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
       $p_width: num  0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
       $variety: Factor w/ 3 levels "Iris-setosa", ..: 1 1 1 1 1 1 1 1 1 1 ...
      

Remodelando los datos usando Melt() y Cast()

  • Otra forma de reorganizar los datos es mediante el uso de funciones de fusión y conversión. Están presentes en el paquete reshape2 .

    ## Create A Dummy Dataset
    d<-data.frame(
         name=c("Arnab", "Arnab", "Soumik", "Mukul", "Soumik"), 
         year=c(2011, 2014, 2011, 2015, 2014), 
         height=c(5, 6, 4, 3, 5), 
         Weight=c(90, 89, 76, 85, 84))
      
    ## View the dataset
    d

    Salida :

        name year height Weight
    1  Arnab 2011      5     90
    2  Arnab 2014      6     89
    3 Soumik 2011      4     76
    4  Mukul 2015      3     85
    5 Soumik 2014      5     84
    
  • La fusión de estos datos significa referirse a alguna variable como variable de identificación (otras se tomarán como variables de medida). Ahora, si el nombre y el año se toman como variable de identificación y la altura y el peso como variables de medida, entonces habrá 4 columnas en el nuevo conjunto de datos: nombre, año, variable y valor . Para cada nombre y año, estará la variable a medir y su valor.

    ## Getting the reshape library
    install.packages("reshape2")
    library(reshape2)
      
    ## Configure the id variables, name and year
    melt(d, id=c("name", "year"))

    Producción:

         name year variable value
    1   Arnab 2011   height     5
    2   Arnab 2014   height     6
    3  Soumik 2011   height     4
    4   Mukul 2015   height     3
    5  Soumik 2014   height     5
    6   Arnab 2011   Weight    90
    7   Aranb 2014   Weight    89
    8  Soumik 2011   Weight    76
    9   Mukul 2015   Weight    85
    10 Soumik 2014   Weight    84
    
  • Ahora el conjunto de datos fundido se puede convertir en una forma compacta mediante la función cast() . Calcule la estatura y el peso promedio de todos.

    ##Save the molten dataset
    d1<-melt(d, id=c("name", "year"))
      
    ##Now cast the data
    d2 <-cast(d1, name~variable, mean)
      
    ## View the data
    d2

    Producción:

    name height Weight
    1  Arnab    5.5   89.5
    2  Mukul    3.0   85.0
    3 Soumik    4.5   80.0
    

Nota: También hay algunos otros paquetes como dplyr y tidyr en R que brindan funciones para preparar datos ordenados.

Publicación traducida automáticamente

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