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>
Lo vemos mĆ”s adelante. š
Un summarise nos crea una nueva variable, a partir de una agrupación de una variable previa.
La estructura es:
Agrupamos la tabla en función de una (o mÔs) variables agrupadoras, con el group_by().
Declaramos el nombre de la nueva variable/columna dentre del summarise().
Escribimos un = para hacer la asignación de información a esa nueva variable.
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
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,
Usar mutate,
Nombre de la nueva variable,
Escribimos igual =
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 ;)
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.
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.
# 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
)
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:
~edo_ultima, la formula que genera el āfaceteoā.
n_col, el numero de columnas de mi matriz de graficas.
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))