Primero. Leemos la base de datos.

Como esto es repaso de la tarea, leemos los datos de la tarea:

# Librerias
library(tidyverse)
## ── Attaching packages ──────────────────────────────────── tidyverse 1.2.1 ──
## āœ” ggplot2 3.2.1     āœ” purrr   0.3.2
## āœ” tibble  2.1.3     āœ” dplyr   0.8.3
## āœ” tidyr   1.0.0     āœ” stringr 1.4.0
## āœ” readr   1.3.1     āœ” forcats 0.4.0
## ── Conflicts ─────────────────────────────────────── tidyverse_conflicts() ──
## āœ– dplyr::filter() masks stats::filter()
## āœ– dplyr::lag()    masks stats::lag()
# Leemos la base
f_comun <- read_csv("http://segasi.com.mx/clases/cide/datos/RNPEDFC_procesado.csv",locale =locale(encoding ="latin1",asciify =TRUE)) %>% 
  janitor::clean_names() %>% 
  rename(fecha_ultima = fecha_en_que_se_le_vio_por_ultima_vez, 
         hora_ultima = hora_en_que_se_le_vio_por_ultima_vez, 
         pais_ultima = pais_en_que_se_le_vio_por_ultima_vez,
         edo_ultima = entidad_en_que_se_le_vio_por_ultima_vez,
         mpo_ultima = municipio_en_que_se_le_vio_por_ultima_vez,
         loc_ultima = localidad_en_que_se_le_vio_por_ultima_vez,
         dependencia_envio = dependencia_que_envio_la_informacion
         )
## Parsed with column specification:
## cols(
##   `Fecha en que se le vio por ultima vez` = col_date(format = ""),
##   anio = col_double(),
##   `Hora en que se le vio por ultima vez` = col_time(format = ""),
##   `Pais en que se le vio por ultima vez` = col_character(),
##   `Entidad en que se le vio por ultima vez` = col_character(),
##   `Municipio en que se le vio por ultima vez` = col_character(),
##   `Localidad en que se le vio por ultima vez` = col_character(),
##   Nacionalidad = col_character(),
##   Estatura = col_character(),
##   Complexion = col_character(),
##   Sexo = col_character(),
##   Edad = col_character(),
##   `Descripcion de senas particulares` = col_character(),
##   Etnia = col_character(),
##   Discapacidad = col_character(),
##   `Dependencia que envio la informacion` = col_character()
## )
# Imprimimos la base 
f_comun
## # A tibble: 36,265 x 16
##    fecha_ultima  anio hora_ultima pais_ultima edo_ultima mpo_ultima
##    <date>       <dbl> <time>      <chr>       <chr>      <chr>     
##  1 2012-03-18    2012 05:00:00    MEXICO      SONORA     NAVOJOA   
##  2 2007-02-05    2007 02:00:26    MEXICO      ESTADO DE… VALLE DE …
##  3 2009-03-14    2009 08:30:54    MEXICO      ESTADO DE… CHALCO    
##  4 2006-12-23    2006 08:00:28    MEXICO      ESTADO DE… TLALNEPAN…
##  5 2008-01-11    2008 12:00:17    MEXICO      ESTADO DE… TOLUCA    
##  6 2012-05-27    2012 12:00:43    MEXICO      ESTADO DE… NICOLAS R…
##  7 2010-07-05    2010 11:00:00    MEXICO      CHIHUAHUA  BOCOYNA   
##  8 2011-06-13    2011 01:00:11    MEXICO      ESTADO DE… AMECAMECA 
##  9 2010-04-24    2010 01:00:47    MEXICO      ESTADO DE… TEOLOYUCAN
## 10 2009-02-09    2009 02:30:00    MEXICO      TLAXCALA   TLAXCALA  
## # … with 36,255 more rows, and 10 more variables: loc_ultima <chr>,
## #   nacionalidad <chr>, estatura <chr>, complexion <chr>, sexo <chr>,
## #   edad <chr>, descripcion_de_senas_particulares <chr>, etnia <chr>,
## #   discapacidad <chr>, dependencia_envio <chr>

Pregunta 1. Claudia Romero Infante: ā€œMi duda para la clase del jueves serĆ­a cómo obtener la frecuencia para una grĆ”fica con facetasā€

Lo vemos mĆ”s adelante. šŸ˜‰

Pregunta 2. Luciana Wainer: ā€œa mi me gustarĆ­a volver a repasar la función Ā“mutateĀ“ y poder platicar sobre el ejercicio 3 de la tareaā€.

Un summarise nos crea una nueva variable, a partir de una agrupación de una variable previa.

La estructura es:

  1. Agrupamos la tabla en función de una (o mÔs) variables agrupadoras, con el group_by().

  2. Declaramos el nombre de la nueva variable/columna dentre del summarise().

  3. Escribimos un = para hacer la asignación de información a esa nueva variable.

  4. Escribimos la fórmula que crea las nuevas variables.

f_comun %>% 
  group_by(anio, edo_ultima) %>% 
  summarise(no_desapariciones = n(), 
            edad_prom = max(na.omit(edad))
            ) %>% 
  ungroup()
## # A tibble: 497 x 4
##     anio edo_ultima       no_desapariciones edad_prom      
##    <dbl> <chr>                        <int> <chr>          
##  1  1968 ESTADO DE MEXICO                 1 60             
##  2  1971 QUERETARO                        1 50             
##  3  1972 CHIHUAHUA                        1 NO ESPECIFICADO
##  4  1976 PUEBLA                           1 45             
##  5  1977 SINALOA                          2 34             
##  6  1978 NUEVO LEON                       1 61             
##  7  1979 CHIHUAHUA                        1 68             
##  8  1979 ESTADO DE MEXICO                 1 63             
##  9  1979 NUEVO LEON                       1 77             
## 10  1980 QUERETARO                        1 63             
## # … with 487 more rows

Pregunta 3. Julio Gonzalez Gonzalez Duran: ā€œseria bueno repasar los argumentos de mutate porque hace tiempo que lo vimos y ahora estamos mĆ”s en la paqueterĆ­a de ggplot2ā€.

La función mutate sirve para crear variables a partir de otras variables, pero a diferencia de summarise, aquí no hay que agrupar ninguna variable. Es decir, la nueva variable creada tiene el mismo tamanio que toda la tabla.

El formato es igual al anterior,

  1. Usar mutate,

  2. Nombre de la nueva variable,

  3. Escribimos igual =

  4. Declaramos las fórmulas que crean la nueva variable.

f_comun <- f_comun %>% 
  mutate(anioPorDos = anio * 2, 
         reciente = ifelse(test = anio >= 2000, 
                           yes = "reciente", 
                           no = "antiguo")
         )
# Si tienes duda de la función ifelse(), checa la ayuda ;)

Pregunta 4. Carlos Alberto Olvera Barajas: ā€œUna de mis dudas es cómo guardar una grĆ”fica.ā€

data("iris")
iris %>% 
  ggplot(aes(Sepal.Width, Sepal.Length)) + 
  geom_point(color = "blue")

Ahora, para guardar la grÔfica en la carpeta de nuestro proyecto, utilizamos la función siguiente. En este caso particular, la última grÔfica graficada se guarda en la carpeta 03 Graficas con el nombre iris2.png, de tamaño 10cmX10cm.

ggsave(filename = "03 Graficas/iris2.png", 
       height = 10, 
       width = 10, 
       units = "cm")

Pero en caso de que les cueste trabajo esto, o para cualquier emergencia, siempre pueden sacar un pantallazo :P.

Repaso tarea.

Pregunta 5 que no me salió en la clase:

Haz la misma grÔfica que en el ejercicio 4, pero ahora incluye una faceta por estado. Esto implica que tendrÔs que cambiar la forma en que calculas el número de observaciones por año.

Primero, creamos el tema

# Reproducimos un tema de una grafica que vi en internet #
tema_copiado <- theme(
  text = element_text(family = "Arial"),  # Cambio todo el texto 
  plot.title = element_text(hjust = 0.5, # Centro el titulo
                            size = 15, # Tamano de letra
                            family = "Arial-Black"), # Tipo de letra
  plot.subtitle = element_text(hjust = 0.5), # Centro el subtitulo
  axis.ticks = element_blank(), # Quito los ticks de los ejes
  panel.background = element_rect(fill = "#faf1d5"), # Cambio color fondo
  axis.line = element_line(color = "#000000", # Color de ejex y ejey
                           size = 1, # Grosor de linea
                           linetype = "solid"), # Patron de linea del eje x del panel del fondo
  panel.grid.minor = element_line(color = "#e5e0cd", # Color linea
                            linetype = 2, # Tipo de linea del fondo (discontinua)
                            size = 1), # Grososr de linea del fondo
  panel.grid.major = element_line(color = "#e5e0cd", # 
                            linetype = 2, # Tipo de linea del fondo (discontinua)
                            size = 1) # Grosor de linea del fondo
) 

2. Hacemos las grƔficas

Nota: El faceteado se incorpora en la función facet_wrap(), que lo que hace es ordenar las grÔficas en matrices de grÔficas, con el objetivo de poder visualizar tres dimensiones en una misma grÔfica (en este caso las dimensiones son espacio = estados, tiempo = años y magnitud = No. de Desaparecidos).

En el caso siguiente, facet_wrap() tiene como argumentos los siguientes:

  1. ~edo_ultima, la formula que genera el ā€œfaceteoā€.

  2. n_col, el numero de columnas de mi matriz de graficas.

  3. scales = "free_x", indica que queremos que los ejes x esten libres para todas las grĆ”ficas. Si quisieramos liberar el eje y utilizamos "free_y" y si queremos liberar ambos ejes utilizamos ā€œfreeā€. En caso de que no queramos librerar nada y que todo sea comparable entre espacio y tiempo, hay que dejar el default en el argumento.

# Copiamos el codigo de arriba, y agrupamos por estado
obs_x_anio_2 <- f_comun %>% 
  group_by(anio, edo_ultima) %>% 
  filter(anio >= 2006) %>%  # Filtramos datos para tener del 2006 al 2018 
  summarise(casosPorAnio = n()) # Contamos (ES LO MISMO QUE LA FN. count)

# Hacemos el plot
obs_x_anio_2 %>% 
  # Quitamos los estados no especificados
  filter(edo_ultima != "NO ESPECIFICADO") %>% 
  ggplot() + 
  geom_line(aes(x = anio, y = casosPorAnio), 
                       color = "red", 
                       lineend = "round", 
                       linetype = "dashed"
                       ) +  
  geom_point(aes(x = anio, y = casosPorAnio),
             color = "black", size = 1) + 
  facet_wrap(~edo_ultima, ncol = 8, scales = "free_x") +
  labs(title = "NĆŗmero de desaparecidos a lo largo del tiempo",
       y = "",
       subtitle = "AƱos de registro: 2006 a 2018",
       caption = "Datos del Fuero ComĆŗn del \nRegistro Nacional de Datos de Personas Extraviadas o Desaparecidas (RNPED)", 
       x = "AƱo"
       ) +
  scale_y_continuous(breaks = c(0,500,1000), labels =   scales::dollar_format(prefix = "", suffix = "\ndesaparecidos")) +
  scale_x_continuous(breaks = c(2006, 2010, 2014, 2017), 
                     limits = c(2006, 2018)
                     ) +
  tema_copiado +
  theme(panel.grid.major = element_blank(),
        panel.grid.minor = element_blank(),
        axis.text.x = element_text(angle = 90))