R Markdown

RMarkdown es un lenguaje markdown pero integrado a R. Para iniciar un documento RMarkdown, van al menú archivo, nuevo archivo, y eligen R Markdown. Allí, le ponen el título al documento, y eligen una de las tres posibles salidas: HTML, PDF o Word. Para este primer ejemplo, elijan HTML.

Para PDF, hay que tener instalado en la computadora el programa LaTex (https://www.latex-project.org/), tambien de fuente abierta, aunque ahora menos usado que hace unos años. Para Word, habrá que tener instalado un Word, o LibreOffice, y el formato se lo datos a través de un archivo que ponemos como template en el preámbulo… Qué es el preámbulo? Es el TOML inicial…

Los lenguajes markdown son formatos para escribir texto, con algunos marcados básicas que le dan formato. Por ejemplo, para hacer una negrita, hay que encerrar el texto entre dos asteriscos (** texto **), o para hacer un texto en itálica, hay que encerrar el texto entre guiones bajos (_ texto en italica _ ). En esta cheatsheet hay más codificaciones markdown https://www.markdownguide.org/basic-syntax/

La gracia del RMarkdown es que se puede escribir un documento, y a ese documento insertarle código de R. Esto puede hacerse de dos maneras, o como bloque de código (block chunk, entre 3 comillas simples para la izquierda, y en la primera con “{r}” entre llaves), o como texto en la línea respectiva (con una comilla simple a la izquierda, la letra “r” y cerramos con otra comilla izquierda simple).

Y cómo lo que se inserta es código, al que se le vinculan archivos o bases de dato, con solo cambiar la base, se actualiza el documento. Por ejemplo, el trabajo que hace Natsumi Shakoda con la brecha de ingresos por género con cada nueva IPH en https://rpubs.com/natsumi_shokida

Para compilar (“knitear”) el documento, debemos clickear en el boton Knit de abajo de la pestaña del documento (al lado de la rueda de propiedades), poniendole el nombre.

Todo lo que quieran saber, está probablemente en este libro: https://bookdown.org/yihui/rmarkdown/

Proyecto

Abramos un nuevo archivo R Markdown, y pongamosle por ejemplo “Informe Final del curso” y ahí podemos poner lo que fuimos trabajando estas clases… empecemos con la clase 1 hasta la 4 a ver cómo queda

Clase 1

En la primera clase del curso trabajamos con los datos de Mortalidad infantil del GCBA por comuna. Descargamos los datos y graficamos por comunas al Norte y al Sur.

#carga de paquetes
library(tidyverse)

# carga de la base
mortalidad <- read_csv2("https://github.com/Demzayat/derecho_y_datos/raw/master/Clase1/mortalidad.csv")

# agrego columna sur/norte
mortalidad <- mortalidad %>% 
  mutate(Comuna = as.factor(Comuna),
         ubicacion =  c("Sur", "Norte", "Sur", "Sur", "Sur", "Norte", "Sur", "Sur", "Sur", "Norte", "Norte", "Norte", "Norte", "Norte", "Norte")
  )
# grafico con color por ubicacion
ggplot(data = mortalidad)+
  geom_col(aes(x = Comuna, y = `2018`, fill = ubicacion))+
  geom_text(aes(x = Comuna, y = `2018`,label = `2018`),
            nudge_y = 0.4)+
  theme_bw()

Clase 2

Descargamos la Encuesta Anual de Hogares (https://www.estadisticaciudad.gob.ar/eyc/?cat=83), para analizar la situación de actividad de varones y mujeres.

individuos <- read.csv2("https://raw.githubusercontent.com/Demzayat/derecho_y_datos/master/Clase2/eah2018_usuarios_ind.txt")

individuos_chica <- individuos %>% 
  select(comuna, dominio, edad, sexo, estado, 
         ingtot_2, nivel, aesc, m1_2, m3_anio, tipcob2_2,
         fexp)
individuos_chica <- individuos_chica %>% 
  mutate(sexo = recode(sexo, `1` = "varon",
                              `2` = "mujer"))

xsexo <- individuos_chica %>% 
  group_by(sexo) %>% 
  summarize(cant = sum(fexp)) %>%  
  mutate(porc = round(cant/sum(cant)*100,2))
xsexo
## # A tibble: 2 x 3
##   sexo     cant  porc
##   <chr>   <int> <dbl>
## 1 mujer 1630072  53.1
## 2 varon 1437918  46.9
individuos_chica <- individuos_chica %>% 
  mutate(estado = recode(estado,  `1` ="Ocupado", 
                         `2` = "Desocupado",
                         `3` = "Inactivo"))
xactividad <- individuos_chica %>% 
  group_by(sexo, estado) %>% 
  summarize (cant = sum(fexp)) %>% 
  mutate(porc = round(cant/sum(cant)*100,2))

xactividad
## # A tibble: 6 x 4
## # Groups:   sexo [2]
##   sexo  estado       cant  porc
##   <chr> <chr>       <int> <dbl>
## 1 mujer Desocupado  74264  4.56
## 2 mujer Inactivo   807284 49.5 
## 3 mujer Ocupado    748524 45.9 
## 4 varon Desocupado  60917  4.24
## 5 varon Inactivo   566627 39.4 
## 6 varon Ocupado    810374 56.4
ggplot(data = xactividad, aes(x = sexo, y = porc, group = sexo))+
  geom_col(aes(fill = estado))+
  geom_text(aes(label = paste0(porc,"%"), y = porc-2), position = "stack")+
  labs(subtitle = "Condición de Actividad población total CABA, 2018",
       y = "", x= "", fill = "Estado")+
  theme_bw()

Clase 3

En la clase 3 vimos graficos y el paquete ggplot. Aprendimos con los ejemplos de Iris que no son tan interesantes, y luego volvimos a la EAH

El primer gráfico calcula ingresos totales por edad, clasificados por sexo.

ggplot(data = individuos_chica)+
  geom_point(aes(x = edad, y = ingtot_2, 
                 color = sexo))

options(scipen = 999)  

El segundo grafico muestra cantidad de varones y mujeres en la EAH

ggplot(data = individuos_chica)+
  geom_freqpoly(aes( x = edad, color = sexo),
                 position = "identity", binwidth = 5)

Y el tercer gráfico muestra ingresos por grupo etario y sexo

xingresos <- individuos_chica %>% 
  group_by(cut(edad, 
               breaks = c(0,14,20,25,35,50,60,110)), sexo) %>% 
  summarize(prom = weighted.mean(ingtot_2, fexp)) %>% 
  rename(grupo = 1) %>% 
  filter(!is.na(grupo))
## Warning: Factor `cut(edad, breaks = c(0, 14, 20, 25, 35, 50, 60, 110))` contains
## implicit NA, consider using `forcats::fct_explicit_na`
ggplot()+
  geom_col(data = xingresos, 
           aes( x = grupo, y = prom, fill = sexo), position = "dodge")

Clase 4

En la clase 4 vimos geolocalización

library(sf)
censo <- st_read("http://cdn.buenosaires.gob.ar/datosabiertos/datasets/informacion-censal-por-radio/caba_radios_censales.geojson", quiet = TRUE)

comunas_a <- st_read("http://cdn.buenosaires.gob.ar/datosabiertos/datasets/comunas/CABA_comunas.geojson", quiet = TRUE)



ggplot()+
  geom_sf(data = censo, aes(fill = POBLACION/VIVIENDAS),
          color = "NA")+
  geom_sf(data = comunas_a, fill = NA, color = "white")+
  geom_sf_text(data = comunas_a, aes(label = COMUNAS), col = "white")+
  labs(title = "Hacinamiento en la CABA",
       subtitle = "con lineas de subte")+
  scale_fill_viridis_c()+
  theme_void()