1 Ejemplo Homicidios

1.1 Lectura de datos

library(tidyverse)
homicidios1 <- read_csv("Tasas_de_homicidios_seg_n_municipios_por_cien_mil_habitantes._A_os_1990_-_2017.csv")

homicidios1

1.2 Formato ancho a largo

  • Ctrl + Shift + M: operador de tubería (%>%)
  • Argumentos de pivot_longer():
    • cols: columnas que participan en la conversión de formato.
    • names_to: nombre de los encabezados o columnas. En este caso lo nombramos como “year”.
    • values_to: nombre de los valores (celdas).
homicidios_largo <- homicidios1 %>% 
  pivot_longer(cols = -Municipio,
               names_to = "year",
               values_to = "homicidio")

homicidios_largo

1.3 Exportando datos

1.3.1 Formato csv

# Exportando datos separados por comas
write_csv(x = homicidios_largo, file = "ejemplo.csv")

1.3.2 Formato de R (.rds)

write_rds(x = homicidios_largo, file = "ejemplo.rds", compress = "xz")
  • El formato .rds puede ser importado a R con la función read_rds():
ejemplo <- read_rds("ejemplo.rds")

1.4 Formato largo a ancho

  • Argumentos de la función pivot_wider():
    • names_from: columna que pasará a los encabezados (nombres de variables)
    • values_from: valores que ocuparán cada celda
homicidios_ancho <- homicidios_largo %>% 
  pivot_wider(names_from = year, values_from = homicidio)

homicidios_ancho

2 Accidentes de tránsito Caquetá

  • Para darle el formato correcto a la base de datos ejecutamos los siguientes procesos:
    • Importar la base de datos
    • Limpiar los nombres con la función clean_names() de la biblioteca janitor.
    • Eliminar la última fila de la base de datos.
    • Eliminar las variables de nombre “total_casos” y “total_tasa”.
    • Pasar del formato ancho al formato largo. Participan en la conversión todas las variables excepto la columna edad.
    • Separar (fragmentar) la columna de nombre “variable” en dos nuevas columnas.
    • Pasar al formato ancho la variable de nombre “tipo” con los valores de nombre “valores”.

2.1 Importación

accidentes1 <- read_csv("Accidentes_de_transporte__tasas_de_lesiones_por_100.000_habitantes__seg_n_edad_y_sexo__Colombia__2011.csv")

accidentes1

2.2 Limpieza de nombres

library(janitor)

accidentes2 <- accidentes1 %>% 
  clean_names()

accidentes2

2.3 Eliminar última fila

ultima_fila <- nrow(accidentes2)

accidentes3 <- accidentes2[-ultima_fila, ]

accidentes3

2.4 Eliminar variables

variables_eliminar <- c(6, 7)

accidentes4 <- accidentes3[, -variables_eliminar]

accidentes4

2.5 Conversión de ancho a largo

accidentes5 <- accidentes4 %>% 
  pivot_longer(cols = -edad_anos,
               names_to = "variable",
               values_to = "valores")

accidentes5

2.6 Separación de columna

  • Vamos a utilizar la función separate(). Esta función requiere de los siguientes argumentos:
    • col: la columna que vamos a fragmentar. En este caso “variable”.
    • into: nombre de las nuevas columnas producto de la separación.
    • sep: separador que permitirá la fragmentación. En este caso el guión bajo "_".
accidentes6 <- accidentes5 %>% 
  separate(col = variable,
           into = c("genero", "tipo"),
           sep = "_")

accidentes6

2.7 Formato largo a ancho

accidentes7 <- accidentes6 %>%
  pivot_wider(names_from = tipo,
              values_from = valores)

accidentes7
  • Con esta base es fácil calcular promedios por género para los casos y la tasa de accidentes de tránsito:
accidentes7 %>% 
  group_by(genero) %>%
  summarise(promedio_casos = mean(casos),
            promedio_tasa = mean(tasa))

2.8 Concatenando procesos

  • Todos los 7 pases anteriores podemos incluirlos en una sola sentencia de código. Esto se facilita a través del operador de tubería (%>%).
  • Para el paso 3 previamente usamos corchetes para eliminar la última fila, sin embargo, estos no son compatibles con el tidyverse, por tal motivo usaremos la función “slice()”.
  • Para el paso 4 previamente usamos los corchetes, sin embargo, en este caso usamos la función “select()”.
accidentes_depurada <- read_csv("Accidentes_de_transporte__tasas_de_lesiones_por_100.000_habitantes__seg_n_edad_y_sexo__Colombia__2011.csv") %>%
  clean_names() %>%
  slice(-ultima_fila) %>% 
  select(-c(total_casos, total_tasa)) %>% 
  pivot_longer(cols = -edad_anos,
               names_to = "variable",
               values_to = "valores") %>% 
  separate(col = variable,
           into = c("genero", "tipo"),
           sep = "_") %>% 
  pivot_wider(names_from = tipo,
              values_from = valores)

accidentes_depurada