Análisis de delitos en CABA 2023

Author

tu nombre y apellido

Published

June 2, 2026

1 Delitos en CABA

El siguiente documento muestra la distribución de delitos en la comuna.

Code
datatable(
  df_delitos%>%slice(1:1000), # achico df para renderizar más rápido
  filter = "top", # agrega filtros por columna
  extensions = "Buttons", # habilita funcionalidades extra
  options = list(
    dom = "Bfrtip",# ubicación de botones, filtros y tabla
    buttons = c(# exportación de datos
      "copy",
      "csv",
      "excel",
      "pdf",
      "print"
    ),
    pageLength = 10,# filas por página
    scrollX = TRUE# scroll horizontal
  )
)

2 Delitos durante la semana

Code
df4_dias_horarios <- df_delitos %>%
  mutate(dia = wday(fecha, label = TRUE)) %>%
  group_by(dia, horario) %>%
  summarise(cantidad = n())

p4_dias_horarios <- ggplot(
  df4_dias_horarios,
  aes(x    = dia,
      y    = horario,
      fill = cantidad)) +
  geom_tile() +
  geom_text(aes(label = cantidad),
            color = "black",
            size  = 3) +
  scale_fill_distiller(palette = "YlOrRd", direction = 1) +
  theme(legend.position = "none")+
  labs(title = "Cantidad de delitos por día y hora")

ggplotly(p4_dias_horarios)

3 Delitos cercanos a comisarías de la comuna

Code
df_delitos_sf <- df_delitos %>%
  st_as_sf(
    coords = c("longitud", "latitud"), # columnas con coordenadas
    crs = 4326, # WGS84
    na.fail = F
  )

# transformamos comisarias a proyección con metros
df_comisarias_metros <- st_transform(df_comisarias, 5347)

# buffer de 900 metros (algo así como 9 cuadras)
buffer_comisarias <- st_buffer(
  df_comisarias_metros,
  dist = 900 # algo así como 9 cuadras
)

# transformamos delitos a proyección con metros
df_delitos_metros <- st_transform(df_delitos_sf, 5347)

# delitos dentro del buffer de cada comisaría (JOIN ESPACIAL)
df_delitos_buffer <- st_join(
  df_delitos_metros,
  buffer_comisarias,
  join = st_within, 
  suffix = c("", "_buffer"))

# cantidad de delitos por comisaría 

delitos_comisaria <- df_delitos_buffer %>%
  st_drop_geometry() %>% # volvemos a df 
  group_by(nombre) %>%
  summarise(cantidad_delitos = n())

p1_comisarias <- ggplot(delitos_comisaria, 
                        aes(nombre, 
                            cantidad_delitos,
                            fill = nombre))+
  geom_bar(stat = "identity")+
  theme_minimal()+
  theme(legend.position = "none")+
  coord_flip()
p1_comisarias

4 Distribución de delitos

Code
m2_iconos <- leaflet(df_delitos_sf%>%filter(!is.na(comuna))) %>%
  addTiles() %>%
  addMarkers(
    clusterOptions = markerClusterOptions(removeOutsideVisibleBounds = FALSE))
m2_iconos