R Markdown

Este es un documento producido en R Markdown donde se hace un análisis de una base de datos de homicidios desde 2017 construida en Excel y analizada en R.

#Establecemos el directorio donde se encuentra alojada nuestra base de datos a través de setwd y añadimos la libreria readxl para que se pueda leer

#Luego importamos, mediante la libreria de readxl, la base de datos y, a continuación, añadimos la hoja

setwd("F:/datos_2021/Trabajo R/Trabajo Diego 2")

library(readxl)

library(DT)

library(ggplot2)

library(plotly)
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
data <- read_excel("BASE_HOM.xlsx", sheet = "Hoja1")

#Utilizamos el paquete de dplyr para transformar datos. Además, se transforma la variable Poblacion_Total de carácter a numérica

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
data$Poblacion_Total = as.numeric(as.numeric(data$Poblacion_Total))
## Warning: NAs introducidos por coerción

#Examinamos la base con la función glimpse, donde se observa la cantidad de filas y columnas. Para el caso, son 787 filas y 11 columnas.

glimpse(data)
## Rows: 787
## Columns: 11
## $ País                <chr> "El Salvador", "El Salvador", "El Salvador", "El S…
## $ Año                 <dbl> 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 20…
## $ Codigo_Departamento <chr> "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", …
## $ Departamento        <chr> "AHUACHAPAN", "AHUACHAPAN", "AHUACHAPAN", "AHUACHA…
## $ Codigo_Municipio    <chr> "101", "102", "103", "104", "105", "106", "107", "…
## $ Municipio           <chr> "AHUACHAPÁN", "APANECA", "ATIQUIZAYA", "CONCEPCIÓN…
## $ Latitud             <chr> "13.9259486", "13.860677799999999", "13.9751920999…
## $ Longitud            <chr> "-89.841138199999904", "-89.802491900000007", "-89…
## $ Homicidios          <dbl> 84, 9, 21, 5, 13, 9, 19, 20, 1, 5, 32, 4, 10, 36, …
## $ Zona                <chr> "Occidental", "Occidental", "Occidental", "Occiden…
## $ Poblacion_Total     <dbl> 129750, 8435, 35332, 12882, 11741, 21077, 31584, 4…

#También hacemos uso de la función head para mostras las primeras n filas

head(data)
## # A tibble: 6 × 11
##   País          Año Codigo_Departamento Departamento Codigo_Municipio Municipio 
##   <chr>       <dbl> <chr>               <chr>        <chr>            <chr>     
## 1 El Salvador  2017 1                   AHUACHAPAN   101              AHUACHAPÁN
## 2 El Salvador  2017 1                   AHUACHAPAN   102              APANECA   
## 3 El Salvador  2017 1                   AHUACHAPAN   103              ATIQUIZAYA
## 4 El Salvador  2017 1                   AHUACHAPAN   104              CONCEPCIÓ…
## 5 El Salvador  2017 1                   AHUACHAPAN   105              EL REFUGIO
## 6 El Salvador  2017 1                   AHUACHAPAN   106              GUAYMANGO 
## # ℹ 5 more variables: Latitud <chr>, Longitud <chr>, Homicidios <dbl>,
## #   Zona <chr>, Poblacion_Total <dbl>

#tail señala las últimas n filas de la base

tail(data)
## # A tibble: 6 × 11
##   País          Año Codigo_Departamento Departamento Codigo_Municipio Municipio 
##   <chr>       <dbl> <chr>               <chr>        <chr>            <chr>     
## 1 El Salvador  2019 14                  LA UNION     1413             POLORÓS   
## 2 El Salvador  2019 14                  LA UNION     1414             SAN ALEJO 
## 3 El Salvador  2019 14                  LA UNION     1415             SAN JOSÉ  
## 4 El Salvador  2019 14                  LA UNION     1416             SANTA ROS…
## 5 El Salvador  2019 14                  LA UNION     1417             YAYANTIQUE
## 6 El Salvador  2019 14                  LA UNION     1418             YUCUAIQUÍN
## # ℹ 5 more variables: Latitud <chr>, Longitud <chr>, Homicidios <dbl>,
## #   Zona <chr>, Poblacion_Total <dbl>

#Dentro de la gramática de dplyr, se encuentra la función mutate, la cual permite calcular nuevas variables. De esta manera, construiremos la variable tasa municipales al dividir la cantidad de homicidios y la población de cada municipio. A continuación, lo multiplicaremos por 100,000 y aproximaremos los decimales a 2.

#Luego utilizamos la función glimpse para ver la nueva variable que se añadió, que es la tasa de homicidios a nivel municipal. Por tanto, ahora son 12 columnas.

data1 <- mutate(data, tasa_hom = round(Homicidios/Poblacion_Total*100000,2))


glimpse(data1)
## Rows: 787
## Columns: 12
## $ País                <chr> "El Salvador", "El Salvador", "El Salvador", "El S…
## $ Año                 <dbl> 2017, 2017, 2017, 2017, 2017, 2017, 2017, 2017, 20…
## $ Codigo_Departamento <chr> "1", "1", "1", "1", "1", "1", "1", "1", "1", "1", …
## $ Departamento        <chr> "AHUACHAPAN", "AHUACHAPAN", "AHUACHAPAN", "AHUACHA…
## $ Codigo_Municipio    <chr> "101", "102", "103", "104", "105", "106", "107", "…
## $ Municipio           <chr> "AHUACHAPÁN", "APANECA", "ATIQUIZAYA", "CONCEPCIÓN…
## $ Latitud             <chr> "13.9259486", "13.860677799999999", "13.9751920999…
## $ Longitud            <chr> "-89.841138199999904", "-89.802491900000007", "-89…
## $ Homicidios          <dbl> 84, 9, 21, 5, 13, 9, 19, 20, 1, 5, 32, 4, 10, 36, …
## $ Zona                <chr> "Occidental", "Occidental", "Occidental", "Occiden…
## $ Poblacion_Total     <dbl> 129750, 8435, 35332, 12882, 11741, 21077, 31584, 4…
## $ tasa_hom            <dbl> 64.74, 106.70, 59.44, 38.81, 110.72, 42.70, 60.16,…

#También, podemos sacar un promedio, desviación estándar y la suma total de los homicidios cometidos desde 2017 a 2019.

summarise(data1, prom_hom=mean(Homicidios), sd=sd(Homicidios),
          suma= sum(Homicidios))
## # A tibble: 1 × 3
##   prom_hom    sd  suma
##      <dbl> <dbl> <dbl>
## 1     12.3  22.8  9706

#Podemos extraer también el promedio del número de homicidios agrupados por año, desde 2017 a 2019. Para ello, se utilizó la función group_by para agrupar años y luego, mediante summarise, se extrajo el promedio de homicidios para ser finalmente ordenado de manera descendente.

group_by(data1, Año) %>% 
  summarise(promedio=mean(Homicidios)) %>% 
  arrange(desc(promedio))
## # A tibble: 3 × 2
##     Año promedio
##   <dbl>    <dbl>
## 1  2017    15.1 
## 2  2018    12.7 
## 3  2019     9.15

#Filtramos valores de acuerdo a especificaciones: tasa de homicidios mayores o iguales a 80 y menores o iguales a 120.96. Luego las ordenamos de forma descendente y seleccionamos cuatro variables

filter(data1, tasa_hom >= 80, tasa_hom <= 120.96) %>% 
  arrange(desc(tasa_hom)) %>% 
  select(Departamento, Municipio, Homicidios, tasa_hom)
## # A tibble: 73 × 4
##    Departamento Municipio               Homicidios tasa_hom
##    <chr>        <chr>                        <dbl>    <dbl>
##  1 CUSCATLAN    SAN BARTOLOMÉ PERULAPÍA         12     121.
##  2 USULUTAN     CONCEPCIÓN BATRES               15     119.
##  3 MORAZAN      CHILANGA                        14     118.
##  4 USULUTAN     SAN FRANCISCO JAVIER             6     118.
##  5 SAN MIGUEL   CHINAMECA                       27     117.
##  6 MORAZAN      ARAMBALA                         2     116.
##  7 LA LIBERTAD  SAN JOSÉ VILLANUEVA             22     116.
##  8 LA LIBERTAD  SAN MATÍAS                       9     116.
##  9 MORAZAN      YAMABAL                          6     116.
## 10 AHUACHAPAN   EL REFUGIO                      14     115.
## # ℹ 63 more rows

#Se hace un análisis agrupando las variables por año y departamento y luego se organiza por año y se establece un orden descendente

group_by(data1,Año, Departamento) %>% 
  summarise(hom=sum(Homicidios), prom=mean(Homicidios)) %>% 
  arrange(desc(hom))
## `summarise()` has grouped output by 'Año'. You can override using the `.groups`
## argument.
## # A tibble: 43 × 4
## # Groups:   Año [3]
##      Año Departamento   hom  prom
##    <dbl> <chr>        <dbl> <dbl>
##  1  2017 SAN SALVADOR  1210  63.7
##  2  2018 SAN SALVADOR   983  51.7
##  3  2019 SAN SALVADOR   625  32.9
##  4  2017 SAN MIGUEL     423  21.2
##  5  2018 LA LIBERTAD    404  18.4
##  6  2017 LA LIBERTAD    396  18  
##  7  2017 SANTA ANA      330  25.4
##  8  2019 SAN MIGUEL     291  14.6
##  9  2017 SONSONATE      290  18.1
## 10  2018 SAN MIGUEL     279  14.0
## # ℹ 33 more rows

#Se muestra un scaterplot interactivo entre la cantidad de homicidios y tamaño de la población por años

#Se muestra el dataset utilizado para hacer el análisis

DT::datatable(data1, fillContainer = T, filter = "top")