Cargamos las librerías, que vamos a ir usando a lo largo de todo el desarrollo

library("tidyverse")
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.1 ──
## ✔ ggplot2 3.3.6     ✔ purrr   0.3.4
## ✔ tibble  3.1.7     ✔ dplyr   1.0.9
## ✔ tidyr   1.2.0     ✔ stringr 1.4.0
## ✔ readr   2.1.2     ✔ forcats 0.5.1
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
library("ggplot2")
library("sf")
## Linking to GEOS 3.9.1, GDAL 3.3.2, PROJ 7.2.1; sf_use_s2() is TRUE
library("osmdata")
## Data (c) OpenStreetMap contributors, ODbL 1.0. https://www.openstreetmap.org/copyright
library("rmarkdown")
library("lubridate")
## 
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
## 
##     date, intersect, setdiff, union
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.
library("mapview")
library("hrbrthemes")
## NOTE: Either Arial Narrow or Roboto Condensed fonts are required to use these themes.
##       Please use hrbrthemes::import_roboto_condensed() to install Roboto Condensed and
##       if Arial Narrow is not on your system, please see https://bit.ly/arialnarrow
library("RColorBrewer")
library("readr")
library("leaflet")
library("XML")
## Warning: package 'XML' was built under R version 4.2.1
library("osmextract")
## Warning: package 'osmextract' was built under R version 4.2.1
## Data (c) OpenStreetMap contributors, ODbL 1.0. https://www.openstreetmap.org/copyright.
## Check the package website, https://docs.ropensci.org/osmextract/, for more details.
library("ggmap")
library("forcats")

Cargamos el dataset de las obras en CABA y filtramos las que no tienen ni lon ni lat.

obras_CABA =  read.csv("https://cdn.buenosaires.gob.ar/datosabiertos/datasets/agencia-gubernamental-de-control/obras-iniciadas/obras-iniciadas.csv")

obras_CABA = filter(obras_CABA, long !="na", lat !="na")

Hacemos que el CSV sea un SF

obras_CABA =  st_as_sf(x = obras_CABA, coords = c("long", "lat"),  crs = 4326)

Realizamos un análisis exploratorio para ver si los puntos nos pueden decir algo

mapview(obras_CABA, color = "red", legend = FALSE)

Parece que no mucho.

Cargamos los barrios de CABA

barrios <- read_sf('https://bitsandbricks.github.io/data/CABA_barrios.geojson')

Unimos ambos datasets

obras_CABA_barrio =  st_join(barrios,obras_CABA)

Acá sacamos el año de la obra para futuros análisis

obras_CABA_barrio=  mutate(obras_CABA_barrio, anio = substr(obras_CABA_barrio$fecha_inicio_obra, 1, 4))

Resumimos por barrio y cantidad las obras.

obras_CABA_barrio_cantidad = obras_CABA_barrio %>% filter(!is.na(BARRIO))  %>% group_by(BARRIO) %>%
  summarise(cantidad= n())

Hacemos nuestro primer gráfico.

 obras_CABA_barrio_cantidad   %>%
  mutate(BARRIO = fct_reorder(BARRIO, cantidad)) %>%
  ggplot( aes(x=BARRIO, y=cantidad)) +
    geom_bar(stat="identity", fill="#f68060", alpha=.8, width=.8) +
    coord_flip() +
    xlab("") +
    theme_bw()   +
    labs(title = "Cantidad de obras en CABA por barrio",
         subtitle = "Periodo 2016-2020",
         caption = "Fuente: portal de datos abiertos de la Ciudad - http://data.buenosaires.gob.ar",
         x = "Barrio",
         y = "Cantidad",
      ) + theme_classic()

Ahora le sumamos el área del barrio al dataset

obras_CABA_barrio_cantidad_area =  mutate(obras_CABA_barrio_cantidad, area = as.numeric(st_area(geometry))) %>% mutate(obras_area = cantidad/area)

Ahora graficamos ajustados por el área

obras_CABA_barrio_cantidad_area   %>%
  mutate(BARRIO = fct_reorder(BARRIO, obras_area)) %>%
  ggplot( aes(x=BARRIO, y=obras_area)) +
    geom_bar(stat="identity", fill="#f68060", alpha=.8, width=.8) +
    coord_flip() +
    xlab("") +
    theme_bw()  +
    labs(title = "Cantidad de obras en CABA por barrio",
         subtitle = "Periodo 2016-2020, ajustado por tamaño del barrio",
         caption = "Fuente: portal de datos abiertos de la Ciudad - http://data.buenosaires.gob.ar",
         x = "Barrio",
         y = "Cantidad",
      ) 

Me genera cierta duda. Parece ser que en contar por cantidad no tiene tanto sentido y sí por metro cuadrado. Veamos

obras_CABA_barrio_m_2 = obras_CABA_barrio %>% filter(!is.na(BARRIO),!is.na(metros_a_construir))  %>% group_by(BARRIO) %>%
  summarise(metros_2= sum(metros_a_construir))
obras_CABA_barrio_m_2   %>%
  mutate(BARRIO = fct_reorder(BARRIO, metros_2)) %>%
  ggplot( aes(x=BARRIO, y=metros_2)) +
    geom_bar(stat="identity", fill="#f68060", alpha=.8, width=.8) +
    coord_flip() +
    xlab("") +
    theme_bw()  +
    labs(title = "Metros cuadrados construidos CABA por barrio",
         subtitle = "Periodo 2016-2020",
         caption = "Fuente: portal de datos abiertos de la Ciudad - http://data.buenosaires.gob.ar",
         x = "Barrio",
         y = "Cantidad",
      ) 

Normalizamos nuevamente por el área del barrio.

obras_CABA_barrio_m_2 = mutate(obras_CABA_barrio_m_2, area = as.numeric(st_area(geometry))) %>% mutate(metros_area = metros_2/area)
obras_CABA_barrio_m_2   %>%
  mutate(BARRIO = fct_reorder(BARRIO, metros_area)) %>%
  ggplot( aes(x=BARRIO, y=metros_area)) +
    geom_bar(stat="identity", fill="#f68060", alpha=.8, width=.8) +
    coord_flip() +
    xlab("") +
    theme_bw()  +
    labs(title = "Metros cuadrados construidos CABA por barrio",
         subtitle = "Periodo 2016-2020, ajustado por area del barrio",
         caption = "Fuente: portal de datos abiertos de la Ciudad - http://data.buenosaires.gob.ar",
         x = "Barrio",
         y = "Cantidad",
      ) 

ggplot() + 
    geom_sf(data = obras_CABA_barrio_cantidad, aes(fill = cantidad)) +
  labs(title = "Cantidad de obras en CABA por barrio",
         subtitle = "Periodo 2016-2020",
         caption = "Fuente: portal de datos abiertos de la Ciudad - http://data.buenosaires.gob.ar",
         x = "Barrio",
         y = "Cantidad",
      ) + scale_fill_viridis_c() 

ggplot() + 
    geom_sf(data = obras_CABA_barrio_cantidad_area, aes(fill = obras_area)) +
  labs(title = "Cantidad de obras en CABA por barrio",
         subtitle = "Periodo 2016-2020, ajustado por tamaño del barrio",
         caption = "Fuente: portal de datos abiertos de la Ciudad - http://data.buenosaires.gob.ar",
         x = "Barrio",
         y = "Cantidad",
      ) + scale_fill_viridis_c() 

ggplot() + 
    geom_sf(data = obras_CABA_barrio_m_2, aes(fill = metros_2)) +
  labs(title = "Metros cuadrados construidos CABA por barrio",
         subtitle = "Periodo 2016-2020",
         caption = "Fuente: portal de datos abiertos de la Ciudad - http://data.buenosaires.gob.ar",
         x = "Barrio",
         y = "Cantidad",
      )  + scale_fill_viridis_c()

ggplot() + 
    geom_sf(data = obras_CABA_barrio_m_2, aes(fill = metros_area)) +
 labs(title = "Metros cuadrados construidos CABA por barrio",
         subtitle = "Periodo 2016-2020, ajustado por area del barrio",
         caption = "Fuente: portal de datos abiertos de la Ciudad - http://data.buenosaires.gob.ar",
         x = "Barrio",
         y = "Cantidad",
      )  + scale_fill_viridis_c()

Hemos realizado un primer análisis exploratorio de las obras realizadas en la ciudad de buenos aires para el período 2016-2020. Por el momento no se distingue etre los años, ni por el tipo de obra (demolición total, demolición parcial, obra nueva, remodelación, etc.)

En cuanto al barrio con mayor cantidad de obras, este es Palermo, sin embargo al ajustar por tamaño del barrio, en donde se encuentran mayor cantidad de obras es en Villa Urquiza. Al analizar los metros cuadrados de obras, Palermo es el barrio con más metros cuadrados en obra, al normalizar nuevamente por área del barrio, resulta que es Montserrat el barrio con mayor proporción de metros cuadrados en obra sobre el área total del barrio.

A nivel geográfico es notable como en ambas variables el sur de la ciudad tiene muchas menos obras tanto en cantidades como en metros cuadrados.