—————LABORATORIO 25———————
Tidy data - datos ordenados - Parte 1
Objetivo: Introducción práctica a los datos ordenados (o tidy data) y a las herrameintas que provee el paquete tidyr.
En este ejecicio vamos a:
Cargar datos (tibbles)
Convesrtir nuestros tibbles en datadrames (para su exportación)
Exportar dataframes originales
Pivotar tabla 4a
Exportar resultado (TABLA PIVOTANTE)
Prerrequisitos. instalar paquete tidyverse
install.packages(“tidyverse”)
Instalar paquete de datos
install.packages(“remotes”)
remotes::install_github(“cienciadedatos/datos”)
install.packages(“datos”)
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 paquete de datos
library("datos")
Tabla 1 hasta tabla 4b. Ver datos como tibble
datos::tabla1
## # A tibble: 6 × 4
## pais anio casos poblacion
## <chr> <dbl> <dbl> <dbl>
## 1 Afganistán 1999 745 19987071
## 2 Afganistán 2000 2666 20595360
## 3 Brasil 1999 37737 172006362
## 4 Brasil 2000 80488 174504898
## 5 China 1999 212258 1272915272
## 6 China 2000 213766 1280428583
Cargar las otras cuatro tablas del paquete de datos
datos::tabla2
## # A tibble: 12 × 4
## pais anio tipo cuenta
## <chr> <dbl> <chr> <dbl>
## 1 Afganistán 1999 casos 745
## 2 Afganistán 1999 población 19987071
## 3 Afganistán 2000 casos 2666
## 4 Afganistán 2000 población 20595360
## 5 Brasil 1999 casos 37737
## 6 Brasil 1999 población 172006362
## 7 Brasil 2000 casos 80488
## 8 Brasil 2000 población 174504898
## 9 China 1999 casos 212258
## 10 China 1999 población 1272915272
## 11 China 2000 casos 213766
## 12 China 2000 población 1280428583
datos::tabla3
## # A tibble: 6 × 3
## pais anio tasa
## <chr> <dbl> <chr>
## 1 Afganistán 1999 745/19987071
## 2 Afganistán 2000 2666/20595360
## 3 Brasil 1999 37737/172006362
## 4 Brasil 2000 80488/174504898
## 5 China 1999 212258/1272915272
## 6 China 2000 213766/1280428583
datos::tabla4a
## # A tibble: 3 × 3
## pais `1999` `2000`
## <chr> <dbl> <dbl>
## 1 Afganistán 745 2666
## 2 Brasil 37737 80488
## 3 China 212258 213766
datos::tabla4b
## # A tibble: 3 × 3
## pais `1999` `2000`
## <chr> <dbl> <dbl>
## 1 Afganistán 19987071 20595360
## 2 Brasil 172006362 174504898
## 3 China 1272915272 1280428583
La visualización de los datos es como tibble, es como un dataframe pero no se puede exportar, cambiar variables (hay ciertas limitantes).
Convirtiendo tibble a dataframe
Primer datadrame (df1) que sea igual a la importación de un data_frame de la tabla1.
df1 <- data_frame(tabla1)
## Warning: `data_frame()` was deprecated in tibble 1.1.0.
## ℹ Please use `tibble()` instead.
Ahora ya aparece en el Environment y se puede exportar
Se ejecuta la misma indicación con las tablas restantes, asigando nombre de dataframe con base en la tabla.
df2 <- data_frame(tabla2)
df3 <- data_frame(tabla3)
df4a <- data_frame(tabla4a)
df4b <- data_frame(tabla4b)
Para visualizar
df1
## # A tibble: 6 × 4
## pais anio casos poblacion
## <chr> <dbl> <dbl> <dbl>
## 1 Afganistán 1999 745 19987071
## 2 Afganistán 2000 2666 20595360
## 3 Brasil 1999 37737 172006362
## 4 Brasil 2000 80488 174504898
## 5 China 1999 212258 1272915272
## 6 China 2000 213766 1280428583
df2
## # A tibble: 12 × 4
## pais anio tipo cuenta
## <chr> <dbl> <chr> <dbl>
## 1 Afganistán 1999 casos 745
## 2 Afganistán 1999 población 19987071
## 3 Afganistán 2000 casos 2666
## 4 Afganistán 2000 población 20595360
## 5 Brasil 1999 casos 37737
## 6 Brasil 1999 población 172006362
## 7 Brasil 2000 casos 80488
## 8 Brasil 2000 población 174504898
## 9 China 1999 casos 212258
## 10 China 1999 población 1272915272
## 11 China 2000 casos 213766
## 12 China 2000 población 1280428583
df3
## # A tibble: 6 × 3
## pais anio tasa
## <chr> <dbl> <chr>
## 1 Afganistán 1999 745/19987071
## 2 Afganistán 2000 2666/20595360
## 3 Brasil 1999 37737/172006362
## 4 Brasil 2000 80488/174504898
## 5 China 1999 212258/1272915272
## 6 China 2000 213766/1280428583
df4a
## # A tibble: 3 × 3
## pais `1999` `2000`
## <chr> <dbl> <dbl>
## 1 Afganistán 745 2666
## 2 Brasil 37737 80488
## 3 China 212258 213766
df4b
## # A tibble: 3 × 3
## pais `1999` `2000`
## <chr> <dbl> <dbl>
## 1 Afganistán 19987071 20595360
## 2 Brasil 172006362 174504898
## 3 China 1272915272 1280428583
¿Cuál de las bases está ordenada y cuál está desordenada?
Los datos irdenados tienen tres características esenciales
Cada variable debe contener su propia columna
Cada observación debe tener su propia fila
Cada valor debe tener su propia celda
Exportar los dataframes originales
write.csv(df1,file="df1.csv")
Se hace lo mismo con los otros dataframes
write.csv(df2,file="df2.csv")
write.csv(df3,file="df3.csv")
write.csv(df4a,file="df4a.csv")
write.csv(df4b,file="df4b.csv")
Ordenando los datos.
Explicación de tibble en cuadrante de visualizaciones
vignette("tibble")
## starting httpd help server ... done
La mayoría de las funciones que usarás en este libro, producen tibbles, ya que son una de las caracterísitcas transversales del tidyverse.
Si ya te has familiarizado con data.frame(), es importante que tomes en cuanta que tibble() hace menos cosas.
Nunca cambia el tipo de los inputs (p. ej., ¡nunca convierte caracteres en factores!)
Nunca cambia el nombre de las variables y nunca asigna nombres a las filas.
Ordenar datos con la tabla4a (PIVOTAR). Se añade el operador pipe %>% (presionando ctrl Shift M)
Se genera objeto llamado t4a_PIVOTANTE (será una tabla ordenada), para pivotear a lo largo (pivot_longer)
Las columnas están dadas por los años y se reemplazará el nombre por anio en los que englobará los dos momentos en el tiempo.
Los valores se tomarán como casos.
t4a_PIVOTANTE = tabla4a %>%
pivot_longer(cols=c("1999", "2000"), names_to="anio", values_to = "casos")
Para visualizar
t4a_PIVOTANTE
## # A tibble: 6 × 3
## pais anio casos
## <chr> <chr> <dbl>
## 1 Afganistán 1999 745
## 2 Afganistán 2000 2666
## 3 Brasil 1999 37737
## 4 Brasil 2000 80488
## 5 China 1999 212258
## 6 China 2000 213766
Exportar resultados: tabla ordenada
write.csv(t4a_PIVOTANTE, file="t4a_PIVOTANTE.csv")
————————FIN DE LABORATORIO 25———————————–