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