3.4 Ejercicios.

library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.2.1     ✔ readr     2.2.0
## ✔ forcats   1.0.1     ✔ stringr   1.6.0
## ✔ ggplot2   4.0.3     ✔ tibble    3.3.1
## ✔ lubridate 1.9.5     ✔ tidyr     1.3.2
## ✔ purrr     1.2.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
delitos <- read.csv("https://cdaj.netlify.app/data/delitos_barrios.csv", stringsAsFactors = TRUE)
barrios_comunas <- read.csv("https://cdaj.netlify.app/data/barrios_comunas.csv")
str(delitos)
## 'data.frame':    3188 obs. of  5 variables:
##  $ periodo: Factor w/ 12 levels "01/2020","02/2020",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ tipo   : Factor w/ 4 levels "Homicidio","Hurto (sin violencia)",..: 1 1 1 1 1 1 1 1 1 1 ...
##  $ subtipo: Factor w/ 9 levels "","Con uso de moto",..: 3 3 3 3 4 8 8 8 8 8 ...
##  $ barrio : Factor w/ 50 levels "","Agronomía",..: 5 21 31 32 40 4 14 19 30 33 ...
##  $ total  : int  1 1 1 1 1 1 1 2 1 1 ...
summary(delitos)
##     periodo                        tipo                 subtipo    
##  01/2020: 284   Homicidio            : 163                  :1166  
##  02/2020: 281   Hurto (sin violencia):1087   Siniestro Vial : 644  
##  03/2020: 280   Lesiones             : 575   Con uso de moto: 517  
##  12/2020: 280   Robo (con violencia) :1363   Hurto Automotor: 504  
##  08/2020: 276                                Robo Automotor : 263  
##  11/2020: 274                                Doloso         :  81  
##  (Other):1513                                (Other)        :  13  
##            barrio         total       
##  Balvanera    :  81   Min.   :  1.00  
##  Barracas     :  81   1st Qu.:  3.00  
##  Flores       :  80   Median :  8.00  
##  Villa Lugano :  80   Mean   : 20.93  
##  Mataderos    :  76   3rd Qu.: 22.00  
##  Villa Soldati:  75   Max.   :393.00  
##  (Other)      :2715

ahora tenemos el nombre de las columnas. Esto nos va a pertmitir selccionar ciertas columnas y cambiar su orden

seleccion <- select(delitos, -tipo, barrio)

head(seleccion)
##   periodo        subtipo        barrio total
## 1 01/2020         Doloso      Barracas     1
## 2 01/2020         Doloso Nueva Pompeya     1
## 3 01/2020         Doloso        Retiro     1
## 4 01/2020         Doloso      Saavedra     1
## 5 01/2020      Femicidio  Villa Devoto     1
## 6 01/2020 Siniestro Vial     Balvanera     1

Aca realice una pequeña seleccion de columnas que me interesa analizar lo hice en el marco del tipo de delito, cantidad y barrio.

Ahora voy a filtrar columnas!

delitos_un_barrio<- filter(delitos, barrio == "Flores")

head(delitos_un_barrio)
##   periodo                  tipo         subtipo barrio total
## 1 01/2020             Homicidio  Siniestro Vial Flores     1
## 2 01/2020 Hurto (sin violencia)                 Flores   143
## 3 01/2020 Hurto (sin violencia) Hurto Automotor Flores    19
## 4 01/2020              Lesiones  Siniestro Vial Flores    73
## 5 01/2020  Robo (con violencia)                 Flores   250
## 6 01/2020  Robo (con violencia) Con uso de moto Flores    27

Ahora separe los delitos que se cometieron en el barrio de Flores.

Pero ahora quiero ordenarlos en la variable de mayor a menor

delitos_flores <-filter (delitos, barrio == "Flores")

ordenado <-arrange(delitos_flores, desc(total))

ordenado
##    periodo                  tipo         subtipo barrio total
## 1  01/2020  Robo (con violencia)                 Flores   250
## 2  02/2020  Robo (con violencia)                 Flores   190
## 3  12/2020  Robo (con violencia)                 Flores   179
## 4  10/2020  Robo (con violencia)                 Flores   163
## 5  11/2020  Robo (con violencia)                 Flores   145
## 6  01/2020 Hurto (sin violencia)                 Flores   143
## 7  03/2020  Robo (con violencia)                 Flores   140
## 8  02/2020 Hurto (sin violencia)                 Flores   136
## 9  12/2020 Hurto (sin violencia)                 Flores   130
## 10 09/2020  Robo (con violencia)                 Flores   120
## 11 11/2020 Hurto (sin violencia)                 Flores   116
## 12 07/2020  Robo (con violencia)                 Flores   115
## 13 10/2020 Hurto (sin violencia)                 Flores   108
## 14 08/2020  Robo (con violencia)                 Flores   105
## 15 06/2020  Robo (con violencia)                 Flores    88
## 16 03/2020 Hurto (sin violencia)                 Flores    86
## 17 09/2020 Hurto (sin violencia)                 Flores    85
## 18 05/2020  Robo (con violencia)                 Flores    78
## 19 08/2020 Hurto (sin violencia)                 Flores    77
## 20 01/2020              Lesiones  Siniestro Vial Flores    73
## 21 04/2020  Robo (con violencia)                 Flores    67
## 22 06/2020 Hurto (sin violencia)                 Flores    48
## 23 12/2020              Lesiones  Siniestro Vial Flores    40
## 24 05/2020 Hurto (sin violencia)                 Flores    38
## 25 11/2020              Lesiones  Siniestro Vial Flores    38
## 26 07/2020 Hurto (sin violencia)                 Flores    36
## 27 02/2020              Lesiones  Siniestro Vial Flores    34
## 28 11/2020  Robo (con violencia) Con uso de moto Flores    30
## 29 03/2020              Lesiones  Siniestro Vial Flores    28
## 30 04/2020 Hurto (sin violencia)                 Flores    28
## 31 01/2020  Robo (con violencia) Con uso de moto Flores    27
## 32 02/2020  Robo (con violencia) Con uso de moto Flores    26
## 33 10/2020              Lesiones  Siniestro Vial Flores    26
## 34 09/2020              Lesiones  Siniestro Vial Flores    25
## 35 08/2020              Lesiones  Siniestro Vial Flores    24
## 36 05/2020              Lesiones  Siniestro Vial Flores    23
## 37 08/2020  Robo (con violencia) Con uso de moto Flores    22
## 38 01/2020 Hurto (sin violencia) Hurto Automotor Flores    19
## 39 03/2020  Robo (con violencia) Con uso de moto Flores    19
## 40 03/2020 Hurto (sin violencia) Hurto Automotor Flores    18
## 41 02/2020 Hurto (sin violencia) Hurto Automotor Flores    17
## 42 09/2020  Robo (con violencia) Con uso de moto Flores    17
## 43 10/2020 Hurto (sin violencia) Hurto Automotor Flores    17
## 44 10/2020  Robo (con violencia) Con uso de moto Flores    16
## 45 06/2020              Lesiones  Siniestro Vial Flores    15
## 46 06/2020  Robo (con violencia) Con uso de moto Flores    15
## 47 07/2020  Robo (con violencia) Con uso de moto Flores    15
## 48 11/2020 Hurto (sin violencia) Hurto Automotor Flores    14
## 49 07/2020              Lesiones  Siniestro Vial Flores    13
## 50 09/2020 Hurto (sin violencia) Hurto Automotor Flores    13
## 51 06/2020 Hurto (sin violencia) Hurto Automotor Flores    12
## 52 12/2020 Hurto (sin violencia) Hurto Automotor Flores    12
## 53 12/2020  Robo (con violencia) Con uso de moto Flores    11
## 54 04/2020              Lesiones  Siniestro Vial Flores     9
## 55 05/2020 Hurto (sin violencia) Hurto Automotor Flores     9
## 56 01/2020  Robo (con violencia)  Robo Automotor Flores     8
## 57 08/2020 Hurto (sin violencia) Hurto Automotor Flores     8
## 58 07/2020 Hurto (sin violencia) Hurto Automotor Flores     7
## 59 04/2020  Robo (con violencia) Con uso de moto Flores     6
## 60 05/2020  Robo (con violencia) Con uso de moto Flores     6
## 61 04/2020 Hurto (sin violencia) Hurto Automotor Flores     4
## 62 05/2020  Robo (con violencia)  Robo Automotor Flores     4
## 63 08/2020  Robo (con violencia)  Robo Automotor Flores     4
## 64 09/2020  Robo (con violencia)  Robo Automotor Flores     4
## 65 03/2020  Robo (con violencia)  Robo Automotor Flores     3
## 66 06/2020  Robo (con violencia)  Robo Automotor Flores     3
## 67 02/2020  Robo (con violencia)  Robo Automotor Flores     2
## 68 07/2020  Robo (con violencia)  Robo Automotor Flores     2
## 69 08/2020             Homicidio          Doloso Flores     2
## 70 11/2020             Homicidio          Doloso Flores     2
## 71 11/2020  Robo (con violencia)  Robo Automotor Flores     2
## 72 12/2020             Homicidio  Siniestro Vial Flores     2
## 73 01/2020             Homicidio  Siniestro Vial Flores     1
## 74 04/2020             Homicidio          Doloso Flores     1
## 75 06/2020             Homicidio          Doloso Flores     1
## 76 07/2020             Homicidio          Doloso Flores     1
## 77 10/2020             Homicidio          Doloso Flores     1
## 78 10/2020  Robo (con violencia)  Robo Automotor Flores     1
## 79 12/2020             Homicidio          Doloso Flores     1
## 80 12/2020             Homicidio       Femicidio Flores     1

Ahora se encuentran ordenado de mayor a menor los delitos del barrio de Flores

ordenado <- ordenado %>%
  mutate(con_violencia = grepl("con violencia", tipo))

ordenado
##    periodo                  tipo         subtipo barrio total con_violencia
## 1  01/2020  Robo (con violencia)                 Flores   250          TRUE
## 2  02/2020  Robo (con violencia)                 Flores   190          TRUE
## 3  12/2020  Robo (con violencia)                 Flores   179          TRUE
## 4  10/2020  Robo (con violencia)                 Flores   163          TRUE
## 5  11/2020  Robo (con violencia)                 Flores   145          TRUE
## 6  01/2020 Hurto (sin violencia)                 Flores   143         FALSE
## 7  03/2020  Robo (con violencia)                 Flores   140          TRUE
## 8  02/2020 Hurto (sin violencia)                 Flores   136         FALSE
## 9  12/2020 Hurto (sin violencia)                 Flores   130         FALSE
## 10 09/2020  Robo (con violencia)                 Flores   120          TRUE
## 11 11/2020 Hurto (sin violencia)                 Flores   116         FALSE
## 12 07/2020  Robo (con violencia)                 Flores   115          TRUE
## 13 10/2020 Hurto (sin violencia)                 Flores   108         FALSE
## 14 08/2020  Robo (con violencia)                 Flores   105          TRUE
## 15 06/2020  Robo (con violencia)                 Flores    88          TRUE
## 16 03/2020 Hurto (sin violencia)                 Flores    86         FALSE
## 17 09/2020 Hurto (sin violencia)                 Flores    85         FALSE
## 18 05/2020  Robo (con violencia)                 Flores    78          TRUE
## 19 08/2020 Hurto (sin violencia)                 Flores    77         FALSE
## 20 01/2020              Lesiones  Siniestro Vial Flores    73         FALSE
## 21 04/2020  Robo (con violencia)                 Flores    67          TRUE
## 22 06/2020 Hurto (sin violencia)                 Flores    48         FALSE
## 23 12/2020              Lesiones  Siniestro Vial Flores    40         FALSE
## 24 05/2020 Hurto (sin violencia)                 Flores    38         FALSE
## 25 11/2020              Lesiones  Siniestro Vial Flores    38         FALSE
## 26 07/2020 Hurto (sin violencia)                 Flores    36         FALSE
## 27 02/2020              Lesiones  Siniestro Vial Flores    34         FALSE
## 28 11/2020  Robo (con violencia) Con uso de moto Flores    30          TRUE
## 29 03/2020              Lesiones  Siniestro Vial Flores    28         FALSE
## 30 04/2020 Hurto (sin violencia)                 Flores    28         FALSE
## 31 01/2020  Robo (con violencia) Con uso de moto Flores    27          TRUE
## 32 02/2020  Robo (con violencia) Con uso de moto Flores    26          TRUE
## 33 10/2020              Lesiones  Siniestro Vial Flores    26         FALSE
## 34 09/2020              Lesiones  Siniestro Vial Flores    25         FALSE
## 35 08/2020              Lesiones  Siniestro Vial Flores    24         FALSE
## 36 05/2020              Lesiones  Siniestro Vial Flores    23         FALSE
## 37 08/2020  Robo (con violencia) Con uso de moto Flores    22          TRUE
## 38 01/2020 Hurto (sin violencia) Hurto Automotor Flores    19         FALSE
## 39 03/2020  Robo (con violencia) Con uso de moto Flores    19          TRUE
## 40 03/2020 Hurto (sin violencia) Hurto Automotor Flores    18         FALSE
## 41 02/2020 Hurto (sin violencia) Hurto Automotor Flores    17         FALSE
## 42 09/2020  Robo (con violencia) Con uso de moto Flores    17          TRUE
## 43 10/2020 Hurto (sin violencia) Hurto Automotor Flores    17         FALSE
## 44 10/2020  Robo (con violencia) Con uso de moto Flores    16          TRUE
## 45 06/2020              Lesiones  Siniestro Vial Flores    15         FALSE
## 46 06/2020  Robo (con violencia) Con uso de moto Flores    15          TRUE
## 47 07/2020  Robo (con violencia) Con uso de moto Flores    15          TRUE
## 48 11/2020 Hurto (sin violencia) Hurto Automotor Flores    14         FALSE
## 49 07/2020              Lesiones  Siniestro Vial Flores    13         FALSE
## 50 09/2020 Hurto (sin violencia) Hurto Automotor Flores    13         FALSE
## 51 06/2020 Hurto (sin violencia) Hurto Automotor Flores    12         FALSE
## 52 12/2020 Hurto (sin violencia) Hurto Automotor Flores    12         FALSE
## 53 12/2020  Robo (con violencia) Con uso de moto Flores    11          TRUE
## 54 04/2020              Lesiones  Siniestro Vial Flores     9         FALSE
## 55 05/2020 Hurto (sin violencia) Hurto Automotor Flores     9         FALSE
## 56 01/2020  Robo (con violencia)  Robo Automotor Flores     8          TRUE
## 57 08/2020 Hurto (sin violencia) Hurto Automotor Flores     8         FALSE
## 58 07/2020 Hurto (sin violencia) Hurto Automotor Flores     7         FALSE
## 59 04/2020  Robo (con violencia) Con uso de moto Flores     6          TRUE
## 60 05/2020  Robo (con violencia) Con uso de moto Flores     6          TRUE
## 61 04/2020 Hurto (sin violencia) Hurto Automotor Flores     4         FALSE
## 62 05/2020  Robo (con violencia)  Robo Automotor Flores     4          TRUE
## 63 08/2020  Robo (con violencia)  Robo Automotor Flores     4          TRUE
## 64 09/2020  Robo (con violencia)  Robo Automotor Flores     4          TRUE
## 65 03/2020  Robo (con violencia)  Robo Automotor Flores     3          TRUE
## 66 06/2020  Robo (con violencia)  Robo Automotor Flores     3          TRUE
## 67 02/2020  Robo (con violencia)  Robo Automotor Flores     2          TRUE
## 68 07/2020  Robo (con violencia)  Robo Automotor Flores     2          TRUE
## 69 08/2020             Homicidio          Doloso Flores     2         FALSE
## 70 11/2020             Homicidio          Doloso Flores     2         FALSE
## 71 11/2020  Robo (con violencia)  Robo Automotor Flores     2          TRUE
## 72 12/2020             Homicidio  Siniestro Vial Flores     2         FALSE
## 73 01/2020             Homicidio  Siniestro Vial Flores     1         FALSE
## 74 04/2020             Homicidio          Doloso Flores     1         FALSE
## 75 06/2020             Homicidio          Doloso Flores     1         FALSE
## 76 07/2020             Homicidio          Doloso Flores     1         FALSE
## 77 10/2020             Homicidio          Doloso Flores     1         FALSE
## 78 10/2020  Robo (con violencia)  Robo Automotor Flores     1          TRUE
## 79 12/2020             Homicidio          Doloso Flores     1         FALSE
## 80 12/2020             Homicidio       Femicidio Flores     1         FALSE

Aca agregue un tabla de si el delito fue cometido con violencia. En el lateral dice true en caso de que si false en caso de que no. Bueno, vamos a salir un poco de flores para analizar la problematica en general en los distintos barrios.

resumen_barrios <- delitos %>%
  group_by(barrio) %>%
  summarise(
    total_delitos = sum(total),
    promedio_por_registro = mean(total),
    maximo = max(total),
    cantidad_registros = n()
  ) %>%
  arrange(desc(total_delitos))

resumen_barrios
## # A tibble: 50 × 5
##    barrio       total_delitos promedio_por_registro maximo cantidad_registros
##    <fct>                <int>                 <dbl>  <int>              <int>
##  1 Palermo               5467                  80.4    393                 68
##  2 Balvanera             4503                  55.6    323                 81
##  3 Flores                3425                  42.8    250                 80
##  4 Caballito             3050                  43.6    197                 70
##  5 Recoleta              3018                  44.4    185                 68
##  6 Almagro               2748                  40.4    206                 68
##  7 Villa Lugano          2462                  30.8    153                 80
##  8 Barracas              2422                  29.9    206                 81
##  9 Belgrano              2238                  31.5    160                 71
## 10 San Nicolás           2064                  32.8    252                 63
## # ℹ 40 more rows

Aca lo que hice es agrupar todas las filas por barrio para calcular las estadisticas de cada uno por separado. Donde se ven la suma total de delitos. Asimismo, pone primero los barrios más peligrosos en razón de cantidad de delitos. Tambien calcula el promedio por registro de mes y tipo. El maximo es el pico de delitos que se han llegado a cometer en ese barrio.

Ahora vamos a usar pipe!

resumen <- delitos %>%
  select(periodo, barrio, tipo, total) %>%
  filter(total > 0) %>%
  mutate(nivel = case_when(
    total >= quantile(total, 2/3) ~ "Alto",
    total >= quantile(total, 1/3) ~ "Medio",
    TRUE ~ "Bajo"
  )) %>%
  group_by(barrio) %>%
  summarise(
    total_delitos = sum(total),
    promedio_por_registro = mean(total),
    maximo = max(total),
    cantidad_registros = n()
  ) %>%
  arrange(desc(total_delitos))

resumen
## # A tibble: 50 × 5
##    barrio       total_delitos promedio_por_registro maximo cantidad_registros
##    <fct>                <int>                 <dbl>  <int>              <int>
##  1 Palermo               5467                  80.4    393                 68
##  2 Balvanera             4503                  55.6    323                 81
##  3 Flores                3425                  42.8    250                 80
##  4 Caballito             3050                  43.6    197                 70
##  5 Recoleta              3018                  44.4    185                 68
##  6 Almagro               2748                  40.4    206                 68
##  7 Villa Lugano          2462                  30.8    153                 80
##  8 Barracas              2422                  29.9    206                 81
##  9 Belgrano              2238                  31.5    160                 71
## 10 San Nicolás           2064                  32.8    252                 63
## # ℹ 40 more rows