21 de agosto de 2018

Objetivos

  • Aprender procedimientos básicos de manejo de datos en R.
  • Seleccionar
  • Filtrar
  • Agrupar
  • Contar

  • Explorar las variables categóricas de la base de datos de marginación

dplyr

  • Es una libraría para manejo de datos.
  • Facilita extraer sumarios a partir de nuestros datos.
  • También sirve para otros propósitos.
  • Recodificar
  • Transformar
  • Calcular otro tipo de sumarios.

Verbos de dplyr

El manejo de datos con dplyr se basa en 5 verbos principales.

Función Acción Uso
select() Seleccionar columnas select(ENT, MUN, AÑO)
filter() Filtrar por filas de acuerdo a una condición filter(AÑO == "2015")
mutate() Modificiar una variable con una función mutate(ANO = as.numeric(AÑO))
summarise() Crear sumarios summarise(años = unique(AÑO))
count() Cuenta categorías count()
arrange() Ordena los resultados arrange(-AÑO)

Datos agrupados

A esos verbos se suman un adverbio

  • El adverbio group_by
  • No hace nada por sí mismo, pero modifica los datos definiendo grupos
  • Las operaciones posteriores se aplicaran a cada grupo

Tuberías

Y la tubería %>%

  • Nos permite encadenar funciones, pasando el resultado de una a la siguiente.
    • Así podemos organizar en pasos replicables nuestro análisis
    • Y leer el código de manera natural
  • La leemos como "después"

datos %>% funcion1 %>% funcion2

Tatuaje mental: Ctrl+Shift+M

Ctrl+Shift+M Ctrl+Shift+M Ctrl+Shift+M Ctrl+Shift+M Ctrl+Shift+M Ctrl+Shift+M Ctrl+Shift+M

Solo un ejemplo

¿Cuántos municipios de más de 50.000 habitantes tienen un grado de marginación muy alto en cada Entidad Federativa de México en 2015?

library(tidyverse)
marginacion %>% 
  select(AÑO, ENT, POB_TOT, GM) %>%  #Solo las col que de interés
  filter(AÑO == "2015") %>%          #Solo 2015
  filter(GM == "Muy alto") %>%       #Solo "Muy Alto"
  group_by(ENT) %>%                  #Agrupo por Entidad
  filter(POB_TOT > 50000) %>%        #Solo municipio con más de 5k
  count() %>%                        #Cuento. Hereda los grupos!
  arrange(-n) -> resultado           #Asigno nombre

resultado  #Visualizo el resultado  
## # A tibble: 5 x 2
## # Groups:   ENT [5]
##   ENT                                 n
##   <chr>                           <int>
## 1 Chiapas                             6
## 2 Guerrero                            2
## 3 Chihuahua                           1
## 4 Puebla                              1
## 5 Veracruz de Ignacio de la Llave     1

Ctrl+Shift+M

Ctrl+Shift+M

Ctrl+Shift+M

Ctrl+Shift+M

Otros verbos de dplyr()

Estos son menos importantes, pero ayudan en casos especiales.

Función Acción Uso
distinct() Valores únicos en una columna distinct(ENT)
drop_na() Elimina missing drop_na()
replace_na() Imputa valores a los NA replace_na(list(SPRIM = 0))
na_if() Imputa NA a ciertos valores na_if(-9999)
sample_n() Extrae una muestra aleatoria tamaño n sample_n(50)

Ahora ustedes

  • ¿Cuántos municipios con GM "Muy alto" se registraron en 2015?
  • ¿Cuántos municipio tiene Oaxaca en 2015?
  • Cuantas delegaciones con GM diferente de Muy bajo tiene CDMX?
  • ¿Cuántos municipio en cada GM tiene cada ENT en 2010?
  • ¿Cuántas entidades federativas registra la base de datos?
  • ¿Cómo ha cambiado el número de municipios con GM "Muy bajo" entre 1990–2015?

Ayuda

Estructura de la base de datos

ENT MUN GM
Aguascalientes Aguascalientes Muy bajo
Aguascalientes Jesús María Muy bajo
Aguascalientes Calvillo Bajo
Aguascalientes Rincón de Romos Bajo