💡
El script correspondiente a este apartadado se puede descargar en el link script_tipo_datos

INTRODUCCIÓN:

El periódico NYTimes señaló en 2014 que “los científicos de datos dedican entre el 50 y el 80 % de su tiempo a la mundana tarea de recopilar, manipular y preparar datos, antes de aplicar ninguna técnica estadística”. Por tanto, es conveniente aprender a procesar los datos brutos para ahorrar tiempo y esfuerzo.

Este procesamiento previo, también conocido como data wrangling, hace referencia al proceso de transformar y limpiar datos brutos en un formato estructurado adecuado para su posterior análisis. Este proceso implica diferentes operaciones (filtrado, agrupamiento, ordenación…). Esta labor constituye un paso previo indispensable antes de someter nuestros datos a análisis más concienzudos.

FASES DEL PROCESAMIENTO DE DATOS

HERRAMIENTAS PARA EL PROCESAMIENTO DE DATOS EN R

La herramienta fundamental para este tipo de análisis son los paquetes del ecosistema tidyverse. Son una colección de paquetes de R diseñados para la ciencia de datos, que incluye herramientas para el data wrangling. Para las actividades de este apartado del temario, los paquetes fundamentales son:

Cabe señalar además el relevante papel del operador %>% (pipe), que permite encadenar funciones, facilitando la lectura y escritura del código al pasar los datos de una operación a la siguiente sin necesidad de multiplicar el número de objetos en el Global Environment.

Como veremos más adelante, en la mayoría de los casos se trabaja con dataframes cuya estructura se denomina wide (ancha, en inglés), pues:

Esta estructura, sin embargo, puede ser transformada.

PREPARATIVOS INICIALES

Para no tener que cargar los paquetes dplyr y tidyr, se procede a activar el paquete tidyverse ya que incluye los dos anteriores como dependencias

library(tidyverse)

Establecer la carpeta de trabajo

setwd("D:/G2040/TEMA_1_Introduccion/TEMA_1_ejercicios")

Cargar el fichero

load("zonas_verdes.RData")

Estructura del fichero (similar a str())

glimpse(zonas_verdes)
## Rows: 100
## Columns: 6
## $ ID                 <int> 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, …
## $ barrio             <chr> "Retiro", "Retiro", "Chamberí", "Retiro", "Retiro",…
## $ parques            <int> 6, 4, 6, 7, 4, 5, 6, 8, 10, 9, 9, 10, 4, 5, 7, 3, 9…
## $ superficie         <dbl> 6.863999, 6.945574, 3.365407, 6.102484, 7.146998, 3…
## $ obras              <int> 0, 1, 1, 0, NA, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,…
## $ fecha_inauguracion <date> 1984-12-05, 1935-09-25, 1962-07-11, 1990-02-06, 20…

Conocer los nombres de las variables

names(zonas_verdes)
## [1] "ID"                 "barrio"             "parques"           
## [4] "superficie"         "obras"              "fecha_inauguracion"

o también

colnames(zonas_verdes)
## [1] "ID"                 "barrio"             "parques"           
## [4] "superficie"         "obras"              "fecha_inauguracion"

EL OPERADOR pipe %>%

Este operador encadena varios pasos simples y consecutivos para obtener un único resultado final, concatenando o uniendo varias funciones, que están disponibles en el paquete magrittr, que forma parte de dplyr. Este operador aumenta la expresividad de R, como si fuera un lenguaje hablado. Su símbolo es %>%

Obsérvese en el siguiente ejemplo. En el paquete base de R, cada vez que se aplican varias funciones consecutivas se escribe cada una de ellas en un reglón, pudiéndose obtener además varios objetos diferentes.

Para ahorrar espacio y reducir el número de objetos en el Global Environment es posible elaborarlas como una secuencia “anidada” que resulta habitualmente bastante ilegible: tercera(segunda(primera(x))). Este anidamiento no es una forma natural de expresar un secuencia de operaciones.

El operador %>% nos permite escribir una secuencia de operaciones de izquierda a derecha: primera(x) %>% segunda(x) %>% tercera(x) Obsérvese que las siguientes instrucciones. En este caso, primero se crea el objeto operacion_1 que contiene 2 variables, conferencia y puntos.

operacion_1 <- select(zonas_verdes, superficie, obras)
operacion_1

A continuación, el objeto operacion_2 selecciona del objeto anterior todos los parques con una superficie superior a 10 ha.

operacion_2 <- filter(operacion_1, superficie >= 10)
operacion_2

Con pipe es posible realizar ambas operaciones de manera consecutiva, creando un único objeto final.

resultado_combinado <- zonas_verdes %>% 
  select(superficie, obras) %>% 
  filter(superficie >= 25)

Eliminamos los datos

rm(operacion_1, operacion_2)

EL PAQUETE dplyr?

El paquete dplyr() es la herramienta más utilizada para la labor de procesamiento de datos en R.

¿Qué es dplyr?
¿Qué es dplyr?

Funciones

Este paquete proporciona una serie de funciones (verbos) para la manipulación y operaciones con data frames y fáciles de recordar (incluso en inglés). Las funciones (verbos) son las siguientes:

  • Variables (columnas):

    select(): selecciona columnas específicas.

    rename(): cambiar el nombre de columnas específicas.

    relocate(): cambiar el orden de columnas específicas.

    mutate(): crea nuevas variables a partir de las existentes.

    bind_cols(): anexar otro dataframe (mismo número de casos).

    join(): anexar otro dataframe (diferente número de casos).

  • Casos (filas):

    filter(): selecciona filas específicas.

    distinct(): identifica casos duplicados.

    arrange(): ordena los datos (orden de las filas) según criterios específicos.

    bind_rows()/add_rows(): anexa otro dataframe.

    slice(): fragmenta el dataframe según criterios determinados.

    n_sample(): selecciona filas aleatoriamente.

  • Análisis por grupos de filas):

    group_by(): segmenta un conjunto de datos en grupos.

    summarize(): calcula estadísticas de resumen.

  • Otras funciones de interes:

  • tidyr:

    pivot_longer(): transforma una base de datos “ancha” en “larga”.

    pivot_wider(): transforma una base de datos “larga” en “ancha”.

Las funciones dplyr se procesan más rápido que las funciones base R. También son más estables en la sintaxis y admiten mejor los conjuntos de datos.

Usa el mismo lenguaje que otros paquetes, como ggplot2(), lo cual facilita su uso.

El resultado de la aplicación de cualquier función es un nuevo data frame.

Argumentos

Todas las funciones de dplyr tienen en común una serie de argumentos. En particular:

  • El primer argumento es un data frame. Los data frames deben estar bien organizados/estructurados, es decir debe existir una observación por columna y, cada columna representar una variable, medida o característica de esa observación.

  • Los argumentos posteriores describen qué hacer con el data frame, utilizando los nombres de las variables (sin comillas). Los otros argumentos describen que hacer con el data frame especificado en el primer argumento, podemos referirnos a las columnas en el data frame directamente sin utilizar el operador $, es decir sólo con el nombre de la columna/variable.

Alguna recomendaciones

  • Valores perdidos. Todas las funciones de agregación aceptan el argumento na.rm que no toma en consideración los valores faltantes antes del cálculo.

  • Recuentos. Siempre que se vaya a realizar una agregación es una buena idea incluir un recuento (n()) o un recuento de valores no faltantes (sum(!is.na(x))). De esa manera, se puede comprobar comprobar que no estás sacando conclusiones basadas en cantidades muy pequeñas de datos.