###Análisis Geoespacial sobre los Datos de Atención Ciudadana en la CABA, año 2019
atencion <- read.csv("C:/Users/garbarino39/Downloads/sistema-unico-de-atencion-ciudadana-2019.csv", stringsAsFactors = FALSE, encoding = "UTF-8")
summary(atencion)
## contacto periodo categoria subcategoria
## Length:989629 Min. :201901 Length:989629 Length:989629
## Class :character 1st Qu.:201904 Class :character Class :character
## Mode :character Median :201906 Mode :character Mode :character
## Mean :201906
## 3rd Qu.:201909
## Max. :201912
##
## concepto tipo_prestacion fecha_ingreso hora_ingreso
## Length:989629 Length:989629 Length:989629 Length:989629
## Class :character Class :character Class :character Class :character
## Mode :character Mode :character Mode :character Mode :character
##
##
##
##
## domicilio_cgpc domicilio_barrio domicilio_calle domicilio_altura
## Length:989629 Length:989629 Length:989629 Min. : 1
## Class :character Class :character Class :character 1st Qu.: 1040
## Mode :character Mode :character Mode :character Median : 2200
## Mean : 2457
## 3rd Qu.: 3483
## Max. :17700
## NA's :123503
## domicilio_esquina_proxima lat long canal
## Length:989629 Min. :-34.70 Min. :-58.53 Length:989629
## Class :character 1st Qu.:-34.63 1st Qu.:-58.48 Class :character
## Mode :character Median :-34.61 Median :-58.45 Mode :character
## Mean :-34.61 Mean :-58.45
## 3rd Qu.:-34.58 3rd Qu.:-58.42
## Max. :-34.53 Max. :-58.34
## NA's :2659 NA's :2659
## genero estado_del_contacto fecha_cierre_contacto
## Length:989629 Length:989629 Length:989629
## Class :character Class :character Class :character
## Mode :character Mode :character Mode :character
##
##
##
##
library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.0 --
## v ggplot2 3.3.0 v purrr 0.3.4
## v tibble 3.0.1 v dplyr 0.8.5
## v tidyr 1.0.2 v stringr 1.4.0
## v readr 1.3.1 v forcats 0.5.0
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(lubridate)
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:dplyr':
##
## intersect, setdiff, union
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
atencion <- atencion %>% mutate(fecha_ingreso = ymd(fecha_ingreso))
###Tomamos cinco casos al azar para ver sus caracteristicas temporales:
set.seed("99")
muestra_de_fechas <- atencion %>%
mutate(fecha_hora = paste(fecha_ingreso, hora_ingreso)) %>%
sample_n(5) %>%
pull(fecha_hora)
muestra_de_fechas
## [1] "2019-10-08 06:05:16 p.m." "2019-05-20 11:33:44 a.m."
## [3] "2019-02-27 09:13:43 a.m." "2019-11-06 03:33:01 p.m."
## [5] "2019-03-31 03:53:11 p.m."
wday(muestra_de_fechas)
## [1] 3 2 4 4 1
wday(muestra_de_fechas, label = TRUE)
## [1] mar lun mié mié dom
## Levels: dom < lun < mar < mié < jue < vie < sáb
###Distibución Mensual
atencion %>%
ggplot() +
geom_bar(aes(x = month(fecha_ingreso, label = TRUE), fill = "red"))+
labs(title = "Distribución mensual de llamados en Atención Ciudadana, 2019",
x = "Mes", y = "Cantidad",
caption= "Fuente: https://data.buenosaires.gob.ar/dataset/sistema-unico-atencion-ciudadana")
atencion_frecuente <- atencion %>%
count(categoria) %>%
top_n(5) %>%
pull(categoria)
## Selecting by n
atencion %>%
filter(categoria %in% atencion_frecuente) %>%
ggplot() +
geom_bar(aes(x = month(fecha_ingreso, label = TRUE), fill = categoria)) +
labs(title = "Distribución mensual de llamados en Atención Ciudadana, 2019",
subtitle = "Por categorias",
x = "Mes", y = "Cantidad",
fill = "Categoria",
caption= "Fuente: https://data.buenosaires.gob.ar/dataset/sistema-unico-atencion-ciudadana")+
coord_flip()
atencion %>%
filter(categoria %in% atencion_frecuente) %>%
ggplot() +
geom_bar(aes(x = month(fecha_ingreso, label = TRUE), fill = categoria),
position = "dodge")+
labs(title = "Distribución mensual de llamados en Atención Ciudadana, 2019",
subtitle = "Por categorias",
x = "Mes", y = "Cantidad",
fill = "Categoria",
caption= "Fuente: https://data.buenosaires.gob.ar/dataset/sistema-unico-atencion-ciudadana")
##### Conclusión:
###Distibución Diaria
conteo <- atencion %>%
filter(categoria %in% atencion_frecuente) %>%
count(categoria, diasemana = wday(fecha_ingreso, label = TRUE, abbr = FALSE))
ggplot(conteo) +
geom_line(aes(x = diasemana, y = n, group = categoria, color = categoria))+
labs(title = "Distribución diaria de llamados en Atención Ciudadana",
subtitle = "Por categorias",
x = "Día", y = "Cantidad",
fill = "Categoria",
caption= "Fuente: https://data.buenosaires.gob.ar/dataset/sistema-unico-atencion-ciudadana")
conteo <- conteo %>%
group_by(categoria) %>%
mutate(pct = n / sum(n) * 100)
ggplot(conteo) +
geom_line(aes(x = diasemana, y = pct, group = categoria, color = categoria)) +
labs(title = "Distribución diaria de llamados en Atención Ciudadana",
subtitle = "Por categorias",
x = "Día", y = "Porcentaje",
fill = "Categoria",
caption= "Fuente: https://data.buenosaires.gob.ar/dataset/sistema-unico-atencion-ciudadana")
##### Conclusión:
###Distibución Horaria
por_hora <- atencion %>%
filter(categoria %in% atencion_frecuente) %>%
count(categoria, hora_base = hour(hms(hora_ingreso))) %>%
group_by(categoria) %>%
mutate(pct = n / sum(n) *100)
ggplot(por_hora) +
geom_line(aes(x = hora_base, y = pct, group = categoria, color = categoria))+
labs(title = "Distribución horaria por tipo de reclamo",
x = "Hora", y = "%",
color = "Llamados más frecuentes", caption= "Fuente: https://data.buenosaires.gob.ar/dataset/sistema-unico-atencion-ciudadana") +
expand_limits(y = 0) +
scale_x_continuous(breaks = 0:23)
##### Conclusión:
###Distibución Geoespacial
###Para poder hacer la representación geoespacial, buscamos un mapa de CABA y sus alrededores
library(ggmap)
## Google's Terms of Service: https://cloud.google.com/maps-platform/terms/.
## Please cite ggmap if you use it! See citation("ggmap") for details.
atencion<- atencion %>%
filter(lat <0, long<0)
bbox <- make_bbox(atencion$long, atencion$lat)
CABA <- get_stamenmap(bbox = bbox, maptype = "toner-lite", zoom = 12)
## Source : http://tile.stamen.com/toner-lite/12/1381/2467.png
## Source : http://tile.stamen.com/toner-lite/12/1382/2467.png
## Source : http://tile.stamen.com/toner-lite/12/1383/2467.png
## Source : http://tile.stamen.com/toner-lite/12/1384/2467.png
## Source : http://tile.stamen.com/toner-lite/12/1381/2468.png
## Source : http://tile.stamen.com/toner-lite/12/1382/2468.png
## Source : http://tile.stamen.com/toner-lite/12/1383/2468.png
## Source : http://tile.stamen.com/toner-lite/12/1384/2468.png
## Source : http://tile.stamen.com/toner-lite/12/1381/2469.png
## Source : http://tile.stamen.com/toner-lite/12/1382/2469.png
## Source : http://tile.stamen.com/toner-lite/12/1383/2469.png
## Source : http://tile.stamen.com/toner-lite/12/1384/2469.png
ggmap(CABA)
### Cruzamos el mapa encontrado, con la base de datos de Atención Ciudadana, año 2019
ggmap(CABA) +
geom_bin2d(data = atencion,
aes(x = long, y = lat)) +
labs(title = "Distribución geoespacial de llamados a Atención Ciudadana",
subtitle = "Año 2019",
x = "Latitud ", y = "Longitud",
fill = "Cantidad",
caption= "Fuente: https://data.buenosaires.gob.ar/dataset/sistema-unico-atencion-ciudadana")
ggmap(CABA) +
geom_bin2d(data = atencion, aes(x = long, y = lat), bins = 100) +
scale_fill_viridis_c() +
labs(title = "Distribución geoespacial de llamados a Atención Ciudadana",
subtitle = "Año 2019",
x = "Latitud ", y = "Longitud",
fill = "Cantidad",
caption= "Fuente: https://data.buenosaires.gob.ar/dataset/sistema-unico-atencion-ciudadana")
##### Para poder visualizar mejor los datos, dejamos el rellano por pixeles y lo pasamos a lineas para podes entender con mayor presición la información
ggmap(CABA) +
geom_density2d(data = atencion, aes(x = long, y = lat, color = stat(level))) +
scale_color_viridis_c() +
labs(title = "Distribución geoespacial de llamados a Atención Ciudadana",
subtitle = "Año 2019",
x = "Latitud ", y = "Longitud",
fill = "Cantidad",
caption= "Fuente: https://data.buenosaires.gob.ar/dataset/sistema-unico-atencion-ciudadana")
###Distibución Geoespacial diferenciada por categoría
ggmap(CABA) +
geom_point(data = filter(atencion, categoria %in% atencion_frecuente),
aes(x = long, y = lat, color = categoria),
size = 0.1, alpha = 0.1) +
labs(title = "Distribución geoespacial de llamados a Atención Ciudadana",
subtitle = "Año 2019",
x = "Latitud ", y = "Longitud",
fill = "Categoría",
caption= "Fuente: https://data.buenosaires.gob.ar/dataset/sistema-unico-atencion-ciudadana") +
scale_color_brewer(palette = "Set1") +
facet_wrap(~categoria)
ggmap(CABA) +
geom_density2d(data = filter(atencion, categoria %in% atencion_frecuente), aes(x = long, y = lat, color = stat(level)))+
labs(title = "Distribución geoespacial de llamados a Atención Ciudadana",
subtitle = "Año 2019",
x = "Latitud ", y = "Longitud",
color = "Nivel",
caption= "Fuente: https://data.buenosaires.gob.ar/dataset/sistema-unico-atencion-ciudadana") +
scale_color_viridis_c() +
facet_wrap(~categoria)
##### Conclusión:
###Distibución Geoespacial diferenciada por categoría
atencion1 <- atencion %>%
mutate(dia_semana = wday(fecha_ingreso, label = TRUE))
ggmap(CABA) +
geom_point(data = filter(atencion1,
categoria %in% c("TRÁNSITO", "LIMPIEZA Y RECOLECCIÓN")),
aes(x = long, y = lat, color = categoria), alpha = .5, size = .2) +
facet_wrap(~dia_semana)+
labs(title = "Distribución geoespacial de llamados a Atención Ciudadana , 2019",
subtitle = "Categorias: Limpieza y Recolección y Tránsito",
x = "Latitud ", y = "Longitud",
fill = "Categoría",
caption= "Fuente: https://data.buenosaires.gob.ar/dataset/sistema-unico-atencion-ciudadana")