————–LABORATORIO 28————————
Tidy data: VALORES FALTANTES
Objetivo: Introducción práctica a los datos ordenados (o tidy data) y a las herramientas que provee el paquete tidyr.
En este ejercicio vamos a:
Cargar datos (tibbles)
LLENAR LOS VALORES FALTANTES
Prerrequisitos:
Instalar paquete tidyverse
install.packages(“tidyverse”)
Cargar paquete tidyverse
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.0 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.0
## ✔ ggplot2 3.4.1 ✔ tibble 3.1.8
## ✔ lubridate 1.9.2 ✔ tidyr 1.3.0
## ✔ purrr 1.0.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the ]8;;http://conflicted.r-lib.org/conflicted package]8;; to force all conflicts to become errors
Cargar datos
Es un tibble llamado acciones. Tiene tres columnas: anio, trimestre y retorno
acciones <- tibble(
anio = c(2015, 2015, 2015, 2015, 2016, 2016, 2016),
trimestre = c(1, 2, 3, 4, 2, 3, 4),
retorno = c(1.88, 0.59, 0.35, NA, 0.92, 0.17, 2.66)
)
Visualizamos
acciones
## # A tibble: 7 × 3
## anio trimestre retorno
## <dbl> <dbl> <dbl>
## 1 2015 1 1.88
## 2 2015 2 0.59
## 3 2015 3 0.35
## 4 2015 4 NA
## 5 2016 2 0.92
## 6 2016 3 0.17
## 7 2016 4 2.66
DF1
Transformamos este table en un dataframe llamado DF1
DF1 = acciones
Visualizamos
DF1
## # A tibble: 7 × 3
## anio trimestre retorno
## <dbl> <dbl> <dbl>
## 1 2015 1 1.88
## 2 2015 2 0.59
## 3 2015 3 0.35
## 4 2015 4 NA
## 5 2016 2 0.92
## 6 2016 3 0.17
## 7 2016 4 2.66
Hay un dato faltante explícito:la tasa de retorno, en el cuarto trimestre del año 2015.
También hay un faltante implícito: no está el trimestre 1 del año 2016
DF2
Creamos dataframe DF2 que provenga del DF1
Activamos operador pipe %>% , para dispersar (spread) por un lado el anio ypor otro el retorno
DF2 = DF1 %>%
spread(anio, retorno)
Visualizamos
DF2
## # A tibble: 4 × 3
## trimestre `2015` `2016`
## <dbl> <dbl> <dbl>
## 1 1 1.88 NA
## 2 2 0.59 0.92
## 3 3 0.35 0.17
## 4 4 NA 2.66
Se muestra de manera explícita los datos que se tienen nulos
Se modificó la estructura de la tabla
DF3
Para eliminar los valores faltantes (explícitos e implícitos)
Creamos dataframe3 DF3 que proviene del table acciones
Activamos pipe %>% para generar un pivotaje a lo ancho
Los nombres los tomará de los anios y los valores de provengan del retorno
Además, se añadirá otro filtro %>% para pivotear a lo largo (para que la regrese a su estado original), considerando que las columnas estén dadas por los años “2015” y “2016”, adempas de considerar los nombres “anio”, y los valores “retorno”
Se debe borrar(values_drop_na) los datos faltantes
DF3 = acciones %>%
pivot_wider(names_from = anio, values_from = retorno) %>%
pivot_longer(
cols = c("2015", "2016"),
names_to = "anio",
values_to = "retorno",
values_drop_na = TRUE
)
Para visualizar
DF3
## # A tibble: 6 × 3
## trimestre anio retorno
## <dbl> <chr> <dbl>
## 1 1 2015 1.88
## 2 2 2015 0.59
## 3 2 2016 0.92
## 4 3 2015 0.35
## 5 3 2016 0.17
## 6 4 2016 2.66
DF4
Otra herramienta para hacer explícitos lo valores faltantes (conservando la estructura original)
Se crea dataframe 4 DF4 que proviene del DF1
Activamos operador pipe %>% (ctrl shift M)
Añadimos la función complete para anio y trimestre
DF4 = DF1 %>%
complete(anio, trimestre)
Visualizar
DF4
## # A tibble: 8 × 3
## anio trimestre retorno
## <dbl> <dbl> <dbl>
## 1 2015 1 1.88
## 2 2015 2 0.59
## 3 2015 3 0.35
## 4 2015 4 NA
## 5 2016 1 NA
## 6 2016 2 0.92
## 7 2016 3 0.17
## 8 2016 4 2.66
Se ha conservado la estructura original de DF1 pero se ha hecho explícita la ausencia de datos.
———————————-FIN LABORATORIO 28————————————