#CONFIGURACION
#LIBRERIAS
Datasets:
Callejero -Fuente: -Año:
Distritos Económicos -Fuente: -Año:
Departamentos en Alquiler -Fuente: -Año:
Departamentos en Venta -Fuente: -Año:
Maestro -Fuente: -Año:
Comunas -Fuente: -Año:
#DF
#CALLEJERO
callejero <- st_read("00-data/callejero.shp",
stringsAsFactors = TRUE,
options = "encoding=latin1") %>%
clean_names()
## options: encoding=latin1
## Reading layer `callejero' from data source
## `I:\Mi unidad\02-ESTUDIOS\00-MEU\01-Clinica de Datos\clinica_de_datos\00-data\callejero.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 31728 features and 29 fields
## Geometry type: LINESTRING
## Dimension: XY
## Bounding box: xmin: 93660.21 ymin: 91516.29 xmax: 111132.2 ymax: 111070.6
## Projected CRS: Argentina_GKBsAs
#DISTRITOS ECONOMICOS
distritos_economicos <- st_read("00-data/distritos_economicos.shp",
stringsAsFactors = TRUE,
options = "encoding=latin1") %>%
st_zm(distritos_economicos)%>%
st_transform(4326)%>%
clean_names() %>%
select(-objeto)
## options: encoding=latin1
## Reading layer `distritos_economicos' from data source
## `I:\Mi unidad\02-ESTUDIOS\00-MEU\01-Clinica de Datos\clinica_de_datos\00-data\distritos_economicos.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 5 features and 6 fields
## Geometry type: POLYGON
## Dimension: XY
## Bounding box: xmin: 97878.13 ymin: 91566.42 xmax: 110165.5 ymax: 106182.9
## Projected CRS: Argentina_GKBsAs
distritos_economicos$superficie <- st_area(distritos_economicos)
#COMUNAS
comunas <- st_read("00-data/comunas/comunas_wgs84.shp",
stringsAsFactors = TRUE,
options = "UTF-8") %>%
clean_names() %>%
rename("comuna" = "comunas",
"barrio" = "barrios")
## options: UTF-8
## Warning in CPL_read_ogr(dsn, layer, query, as.character(options), quiet, : GDAL
## Message 6: open option 'UTF-8' is not formatted with the key=value format
## Reading layer `comunas_wgs84' from data source
## `I:\Mi unidad\02-ESTUDIOS\00-MEU\01-Clinica de Datos\clinica_de_datos\00-data\comunas\comunas_wgs84.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 15 features and 6 fields
## Geometry type: MULTIPOLYGON
## Dimension: XY
## Bounding box: xmin: -58.53152 ymin: -34.70529 xmax: -58.33515 ymax: -34.52649
## Geodetic CRS: WGS 84
comunas$comuna <- as.factor(comunas$comuna)
#BARRIOS
barrios <- st_read("00-data/barrios_caba/barrios_wgs84.shp",
stringsAsFactors = TRUE,
options = "UTF-8") %>%
st_zm(barrios) %>%
st_transform(4326) %>%
clean_names()%>%
select(-objeto)
## options: UTF-8
## Warning in CPL_read_ogr(dsn, layer, query, as.character(options), quiet, : GDAL
## Message 6: open option 'UTF-8' is not formatted with the key=value format
## Reading layer `barrios_wgs84' from data source
## `I:\Mi unidad\02-ESTUDIOS\00-MEU\01-Clinica de Datos\clinica_de_datos\00-data\barrios_caba\barrios_wgs84.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 48 features and 5 fields
## Geometry type: POLYGON
## Dimension: XY
## Bounding box: xmin: -58.53152 ymin: -34.70529 xmax: -58.33515 ymax: -34.52649
## Geodetic CRS: WGS 84
barrios$area <- st_area(barrios)
#MAESTRO ACTIVIDADES ECONOMICAS
maestro <- read.csv("00-data/dataset_MEC.csv",
stringsAsFactors = TRUE) %>%
mutate(barrio_normalizado = if_else(barrio_normalizado == "" &
comuna_normalizada == "11",
"VILLA GRAL. MITRE", barrio_normalizado)) %>%
filter(comuna_normalizada != "",
comuna_normalizada != "ALMAGRO")%>%
clean_names() %>%
rename("comuna" = "comuna_normalizada",
"barrio" = "barrio_normalizado")
maestro$rubro_resumen <- as.character(substr(maestro$rubro, 1, 7))
#DEPTOS ALQUILER
deptos_alquiler <- data.frame(read_excel(
"00-data/MI_DAN_AX04_procesado.xlsx",
#sheet="calif_ocup_sexo__annio__calif_ocup_limpio.xlsx",
#range = "A1:D100",
col_names = TRUE,
col_types = NULL,
na = "",
trim_ws = TRUE,
skip = 0) %>%
clean_names())
#DEPTOS VENTA
deptos_venta <- data.frame(read_excel(
"00-data/MI_DVN_procesado.xlsx",
#sheet="calif_ocup_sexo__annio__calif_ocup_limpio.xlsx",
#range = "A1:D100",
col_names = TRUE,
col_types = NULL,
na = "",
trim_ws = TRUE,
skip = 0) %>%
clean_names())
#DATOS POBLACIONALES 2022
datos_pob2022 <- read.csv2("00-data/cnphv2022_resultados_provisionales-argentina.csv",
stringsAsFactors = TRUE,
encoding = "latin1") %>%
clean_names()
#ESTACIONES DE SUBTE
estaciones_subte <- st_read("00-data/estaciones_subte/estaciones-de-subte.shp") %>%
clean_names()
## Reading layer `estaciones-de-subte' from data source
## `I:\Mi unidad\02-ESTUDIOS\00-MEU\01-Clinica de Datos\clinica_de_datos\00-data\estaciones_subte\estaciones-de-subte.shp'
## using driver `ESRI Shapefile'
## Simple feature collection with 90 features and 3 fields
## Geometry type: POINT
## Dimension: XY
## Bounding box: xmin: -58.48639 ymin: -34.64331 xmax: -58.36993 ymax: -34.55564
## Geodetic CRS: WGS 84
#USUARIOS DE SUBTE / SUBSET 2020
usuarios_subte2020 <-read_excel("00-data/usuarios_subte/viajes_anual.xlsx") %>%
clean_names()%>%
filter_all(any_vars(grepl("2020", .)))
#VIAJES POR MOLINETE
viajes_molinete2020 <- read.csv("00-data/usuarios_subte/historico2.csv",
stringsAsFactors = TRUE,
encoding = "UTF-8") %>%
clean_names() %>%
filter(!is.na(fecha), fecha!="")%>%
mutate(estacion = case_when(estacion == "Ag�ero" ~"Aguero",
estacion == "Saenz Pe�a"~"SAENZ PEÑA"), estacion = toupper(estacion))
Aclaración importante: En una primera exploración, se identificó que no había datos para el barrio “Villa Gral. Mitre”, lo cual resultaba algo extraño. Debido a que se identificaron más de 4.000 observaciones cuyo valor en “comuna_normalizada” era “11” y su valor en “barrio_normalizado” era ““, se decidió asumir que los mismos pertenecían a dicho barrio, dado que se encuentra en la Comuna 11. Es por esa razón que se realizaron modificaciones al campo para lograr completar ese dato en función de lo que se asumió.
#01-PARTE MATI
A partir de los datos provisirios del Censo Nacional de Población de 2022, se buscará responder la pregunta acerca de la relación entre la distribución de establecimientos y la distribución de la población.
En primer lugar, leeremos la base datos provisorios y explicaremos su estructura y composición. Como se puede observar, la misma tiene 529 observaciones y 8 variables de información, vinculadas al partido o departamento, la provincia y la cantidad de viviendas, de hogares y de población en situación de calle. A continuación previsualizaremos la misma:
paged_table(head(datos_pob2022))
Dado que el ámbito de análisis se restringe a la Ciudad Autónoma de Buenos Aires, filtramos estas observaciones y nos quedamos solamente con esa base de datos.
datos_pob2022caba <- datos_pob2022 %>%
filter(provincia == "Ciudad Autónoma de Buenos Aires")
#Eliminamos la original para no sobrecargar el environment
rm(datos_pob2022)
Como podemos observar, en la base maestro que estamos usando las comunas se encuentran normalizadas de una determinada manera que difiere de la que contiene nuestra nueva base datos_pob2022caba. Para normalizarlas, eliminaremos la palabra “Comuna” del nombre.
datos_pob2022caba <- datos_pob2022caba %>%
mutate(partido_departamento = gsub("Comuna ", "", partido_departamento))%>%
rename(comuna = partido_departamento)
Ahora sí podremos iniciar el trabajo de comparación. En primer lugar, agregaremos una columna que permita entender la participación de cada comuna en la cantidad total de habitantes de la Ciudad Autónoma de Buenos Aires.
datos_pob2022caba <- datos_pob2022caba %>%
mutate(porcentaje_pob = round(pob_total/(sum(pob_total))*100,2))
Como podemos ver, la Comuna 13 es la que más población tiene (8.49% del total) y la Comuna 2 la que menos (5.07%).
Ahora analizaremos la participación de cada Comuna en la cantidad de establecimientos. Para ello, primero haremos una nueva base que agrupe a los valores por Comuna. Adicionalmente,agregamos el porcentaje de establecimientos por Comuna.
maestro_comuna <- maestro %>%
group_by(comuna)%>%
summarise(cantidad_establecimientos=n())%>%
mutate(porcentaje_est = round(cantidad_establecimientos/sum(cantidad_establecimientos)*100,2))%>%
arrange(porcentaje_est)
Veamos cómo se ven los valores:
paged_table((maestro_comuna))
Como podemos ver, la Comuna 8 tiene una participación muy baja en el total de establecimientos comerciales de la Ciudad Autónoma de Buenos Aires: 1,84%. En el otro extremo, la Comuna 3 tiene una participación muy alta con un total de 12,14%. .
Otro dato importante está vinculado a los rangos de los valores. Mientras que en el análisis sobre la participación de la población las Comunas presentan poca dispersión (de 5,07% a 8,50%), en los establecimientos encontramos una gran diferencia (de 1,84% a 12,14%).
Para proceder a realizar un análisis geoestadístico, primero uniremos las bases:
maestro_comuna <- left_join(maestro_comuna, datos_pob2022caba, by="comuna")
Con la base unida, ahora agregaremos la base del mapa.
datos_comunas_mapa <- left_join(comunas, maestro_comuna, by="comuna")
Si vemos el mapa en relación a la participación de cada Comuna sobre el total, podemos observar lo siguiente:
ggplot(datos_comunas_mapa)+
geom_sf(aes(fill=porcentaje_est), color="#8a8a8a") +
labs(title="Porcentaje de establecimientos por Comuna sobre el total de la Ciudad",
subtitle="Valores relativos",
fill="Porcentaje de establecimientos",
caption="Fuente: datos provistos por el GCABA")+
scale_fill_distiller(palette = "Blues", direction=1)+
theme_light()+theme(title=element_text(face='bold'),
legend.position='bottom')
Si la misma visualización la hacemos con la participación de cada Comuna en relación a la población total, el resultado es el siguiente:
ggplot(datos_comunas_mapa)+
geom_sf(aes(fill=porcentaje_pob), color="#8a8a8a") +
labs(title="Porcentaje de población por Comuna sobre el total de la Ciudad",
subtitle="Valores relativos",
fill="Porcentaje de población",
caption="Fuente: datos provistos por el GCABA")+
scale_fill_distiller(palette = "Blues", direction=1, guide=guide_colourbar(direction='horizontal', title.position='top', title.hjust=3, label.hjust = 3, keywidth = 4, keyheight = 4))+
theme_light()+
theme(title=element_text(face='bold'),
legend.position='bottom')
Ahora bien, resulta interesante poder comparar ambos mapas. Simplificaremos un poco los mismos para tener una comparación rápida en términos visuales:
plot_pob <- ggplot(datos_comunas_mapa)+
geom_sf(aes(fill=porcentaje_pob), color="#8a8a8a") +
labs(subtitle="Porcentaje población sobre total Ciudad")+
scale_fill_distiller(palette = "Blues", direction=1, guide=guide_legend(direction='horizontal', title.position='top', title.hjust=.5, label.hjust = .5, keywidth = 1, keyheight = 1))+
geom_sf_label(aes(label=paste0("Comuna ", comuna)), size=2)+
theme_light()+
theme(title=element_text(face='bold'),
legend.position='bottom')
plot_est <- ggplot(datos_comunas_mapa)+
geom_sf(aes(fill=porcentaje_est), color="darkgray") +
labs(subtitle="Porcentaje establecimientos sobre total Ciudad")+
scale_fill_distiller(palette = "Blues", direction=1, guide=guide_legend(direction='horizontal', title.position='top', title.hjust=.5, label.hjust = .5, keywidth = 1, keyheight = 1))+
geom_sf_label(aes(label=paste0("Comuna ", comuna)), size=2)+
theme_light()+
theme(title=element_text(face='bold'),
legend.position='bottom')
require(gridExtra)
## Loading required package: gridExtra
##
## Attaching package: 'gridExtra'
## The following object is masked from 'package:dplyr':
##
## combine
plot01 <- grid.arrange(plot_pob, plot_est, nrow=1)
## Warning in st_point_on_surface.sfc(sf::st_zm(x)): st_point_on_surface may not
## give correct results for longitude/latitude data
## Warning in st_point_on_surface.sfc(sf::st_zm(x)): st_point_on_surface may not
## give correct results for longitude/latitude data
Como podemos observar, los quiebres son distintos debido a la diferencia de la amplitud de rangos entre ambas categorías. Adicionalmente, podemos ver que los valores mayores de cada categoría no se concentran en las mismas Comunas.
Ahora bien, resulta interesante ver la diferencia porcentual entre ambas categorías. Para ello, añadiremos un campo.
datos_comunas_mapa <- datos_comunas_mapa %>%
mutate(diferencia = porcentaje_pob - porcentaje_est)
Las Comunas con diferencias positivas tienen más partiicpación en la población que en los establecimientos, mientras que las negativas tienen una participación mayor sobre estos últimos. Visualicemos esto en un gráfico de barras.
ggplot(datos_comunas_mapa)+
geom_bar(aes(x=comuna, weight=diferencia), fill="#16425b")+
labs(title="Diferencia de la participación de cada Comuna entre categorías",
y="Diferencia entre categoría población y establecimiento (pp)",
x="Comunas",
caption="Fuente: datos provistos por el GCABA")+
geom_label(aes(x=comuna, y=diferencia, label=as.numeric(round(diferencia,1))), size = 4, nudge_y = 0.3)+
coord_flip()+
theme_light()
Como podemos observar, las dos Comunas con mayor diferencia en favor de los establecimientos son la 1 y la 3. Las que tienen mayor diferencia en favor de la población son la 8 y la 12. Por su parte, las Comunas 2 y 7 tienen un equilibrio casi perfecto en relación a la participación de la población y los establecimientos.
Esta información, sumada al análisis gráfico realizado anteriormente permite confirmar con datos lo que resulta algo esperable:
Dadas las limitaciones que presenta la base de datos poblacionales provisionales del Censo de 2022, se buscará realizar el análisis con datos del censo de 2010.
datos_pob2010 <- read_excel("00-data/censo2010/caba_pob_barrios_2010.xlsx") %>%
clean_names()
maestro_barrios <- maestro %>%
group_by(barrio)%>%
summarise(cantidad_establecimientos=n())
datos_barrios2010 <- left_join(maestro_barrios, datos_pob2010, by="barrio") %>%
filter(barrio != "")
Ahora lo uniremos con el mapa de base de barrios.
datos_barrios2010_mapa <- left_join(barrios, datos_barrios2010, by="barrio")
Ahora visualizaremos la cantidad de establecimientos (valores absolutos) por barrio:
ggplot(datos_barrios2010_mapa)+
geom_sf(aes(fill=cantidad_establecimientos), color="darkgray")+
labs(title="Cantidad de establecimientos por barrio",
subtitle="Valores absolutos",
fill="Cantidad de establecimientos",
caption="Fuente: datos provistos por el GCABA",
)+
scale_fill_distiller(palette = "Blues", direction=1, guide=guide_legend(direction='horizontal', title.position='top', title.hjust=.5, label.hjust = .5, keywidth = .5, keyheight = .5))+
geom_sf_label(aes(label=barrio), size=2.3)+
theme_light()+
theme(title=element_text(face='bold'),
legend.position='bottom')
## Warning in st_point_on_surface.sfc(sf::st_zm(x)): st_point_on_surface may not
## give correct results for longitude/latitude data
Como podemos observar, el barrio con mayor cantidad de establecimientos es Balvanera, seguido por Palermo.
Ahora analizaremos la cantidad de establecimientos por cada 1.000 habitantes de manera de poder contestar preguntas en torno a la disponibilidad de servicios en cada barrio y de poder intuir el perfil de cada uno de ellos (residencial, laboral, etc).
datos_barrios2010_mapa <- datos_barrios2010_mapa %>%
mutate(cant_est_pob = round(1000*cantidad_establecimientos/poblacion, 2))
Veamos cómo se ve el mapa de la Ciudad de Buenos Aires con este análisis.
ggplot(datos_barrios2010_mapa)+
geom_sf(aes(fill=cant_est_pob), color="#8a8a8a")+
labs(title="Cantidad de establecimientos por cada 1.000 habitantes",
subtitle="Valores absolutos",
fill="Cantidad de establecimientos por cada 1.000 habitantes",
caption="Fuente: datos provistos por el GCABA")+
scale_fill_distiller(palette = "Blues", direction=1, guide=guide_legend(direction='horizontal', title.position='top', title.hjust=.5, label.hjust = .5, keywidth = .5, keyheight = .5))+
geom_sf_label(aes(label=barrio), size=2.3)+
theme_light()+
theme(title=element_text(face='bold'),
legend.position='bottom')
## Warning in st_point_on_surface.sfc(sf::st_zm(x)): st_point_on_surface may not
## give correct results for longitude/latitude data
Como podemos observar, los barrios con más establecimientos por cada
1.000 habitantes son San Nicolás, Floresta y Balvanera.
Veamos esto con un gráfico de barras para poder ver con más detalle la diferencia entre barrios:
ggplot(datos_barrios2010_mapa)+
geom_bar(aes(x=barrio, weight=cant_est_pob), fill="#16425b")+
labs(title="Cantidad de establecimientos por cada 1.000 habitantes",
y="Cantidad de establecimientos por cada 1.000 habitantes",
x="Barrios",
caption="Fuente: datos provistos por el GCABA")+
geom_label(aes(x=barrio, y=cant_est_pob, label=as.numeric(round(cant_est_pob,1))), size = 2.5, label.size = .5, nudge_y = 20)+
coord_flip()+
theme_light()
datos_barrios2010_mapageo <- st_as_sf(datos_barrios2010_mapa)
pal_est <- colorNumeric("Blues", domain = datos_barrios2010_mapageo$cantidad_establecimientos)
pal_est_pob <- colorNumeric("Blues", domain = datos_barrios2010_mapageo$cant_est_pob)
leaflet(st_zm(datos_barrios2010_mapageo) %>% st_transform(4326)) %>%
addTiles() %>%
#setView(lat=-34.5828, lng=-58.3792,zoom=16)%>%
addProviderTiles(providers$CartoDB.Positron, group = "OSM",
options = providerTileOptions(minzoom = 1, maxzoom = 15)) %>%
addLayersControl(
baseGroups = c("OSM","Satelite"),
overlayGroups = c("Cant. Establecimientos / 1.000 hab", "Cant. Establecimientos"))%>%
addPolygons(data = (st_zm(datos_barrios2010_mapageo) %>% st_transform(4326)),
fillColor = ~pal_est(cantidad_establecimientos),
weight = 1,
color = "black",
fillOpacity = 0.7,
popup = ~paste("<strong> Barrio: </strong>", barrio, "<br> <strong> Cant. Establecimientos / 1.000 habitantes: </strong>", cant_est_pob),
group = "Cant. Establecimientos / 1.000 hab") %>%
addPolygons(data = (st_zm(datos_barrios2010_mapageo) %>% st_transform(4326)),
fillColor = ~pal_est_pob(cant_est_pob),
weight = 1,
color = "black",
fillOpacity = 0.7,
popup = ~paste("<strong> Barrio: </strong>",barrio, "<br> <strong> Cant. Establecimientos </strong>", cantidad_establecimientos),
group = "Cant. Establecimientos")
El mapa consolidado nos permite extraer conclusiones:
Cantidad de establecimientos: los barrios con mayor cantidad de establecimientos se encuentran en dos sectores de la Ciudad: zona de micro y macrocentro junto a su área de influencia y, en otro extremo, el barrio de Floresta.
Cantidad de establecimiento por cada 1.000 habitantes: se identifican sectores con alta concentración de oficinas y espacios de trabajo a los que asiste población que no reside en el barrio (tanto de la Ciudad Autónoma de Buenos Aires como de otras jurisdicciones) y en los que no existe un perfil residencial consolidado. Además, es posible ver cómo se incrementa esta relación en sectores de la Ciudad con alto poder adquisitivo (Comunas 13, 14 y 2) con marcado perfil residencial y pocas o nulas áreas de informalidad.
#02-PARTE JIME
¿Cuáles son las zonas con mayor y menor concentración de establecimientos económicos?
Como ya vimos en la sección anterior, los establecimientos económicos se distribuyen de manera desigual en el territorio de la CABA. Comenzamos analizando el porcentaje de establecimientos que contenía cada barrio sobre el total de la ciudad, y procedemos ahora a estudiar su densidad, ya que esto nos muestra otra cara de la realidad: hay barrios que acumulan un gran porcentaje, pero esto se debe a la superficie que tienen para su desarrollo, mientras que otros cuentan con una mayor cantidad de locales por m2.
concentra_com <- maestro %>%
group_by(barrio) %>%
summarise(cant=n()) %>%
arrange(-cant)
summary(concentra_com)
## barrio cant
## Length:48 Min. : 1035
## Class :character 1st Qu.: 4410
## Mode :character Median : 6676
## Mean :10667
## 3rd Qu.:11818
## Max. :59136
datatable(concentra_com)
Podemos ver que, habiendo un promedio de 10.667 establecimientos económicos por barrio, existe mayor concentración en Balvanera con 59.136 locales (seguido por Palermo y Flores) y menor concentración en Versalles con 1.035barrios (seguido por Coghlan y Agronomía).
Sin embargo, analizando este dato geográficamente podría ser conveniente investigar la densidad de comercios por barrio de manera que el tamaño de estos no genere una lectura errónea.
concentra_com_map <- left_join(barrios, concentra_com, by = "barrio") %>%
mutate(area = as.numeric(area),
area_hec = as.numeric(area/10000),
est_hec = cant/area_hec) %>%
arrange(-est_hec)%>%
mutate_if(is.numeric,round,digits = 2)
summary(concentra_com_map)
## barrio comuna perimetro area
## Length:48 Min. : 1.000 Min. : 4531 Min. : 1232459
## Class :character 1st Qu.: 4.000 1st Qu.: 6554 1st Qu.: 2222380
## Mode :character Median : 9.500 Median : 8254 Median : 3680279
## Mean : 8.458 Mean : 9863 Mean : 4243364
## 3rd Qu.:12.000 3rd Qu.:11127 3rd Qu.: 5143805
## Max. :15.000 Max. :22127 Max. :15848482
## cant area_hec est_hec geometry
## Min. : 1035 Min. : 123.2 Min. : 2.44 POLYGON :48
## 1st Qu.: 4410 1st Qu.: 222.2 1st Qu.: 13.37 epsg:4326 : 0
## Median : 6676 Median : 368.0 Median : 19.24 +proj=long...: 0
## Mean :10667 Mean : 424.3 Mean : 26.96
## 3rd Qu.:11818 3rd Qu.: 514.4 3rd Qu.: 30.65
## Max. :59136 Max. :1584.8 Max. :136.17
datatable(subset(concentra_com_map %>% st_drop_geometry()))
Ahora podemos ver que, habiendo un promedio de 0,0027 comercios/m2 en cada barrio, existe mayor concentración también en Balvanera con 0,0136 comercios/m2, pero en este caso seguido por Nicolas y Floresta con 0,0108 y 0,0085 comercios/m2. Y que existe menor concentración en los barrios Villa Soldati, Puerto Madero y Villa Riachuelo con valores inferiores a 0,0005 comercios/m2.
#JIME, ACÁ METÍ MANO UN POQUITO PORQUE NO ME CORRÍA EL MAPA Y HACIENDO ESO VI QUE LOS NÚMEROS TE DABAN MUY BAJOS PORQUE CALCULABAS COMERCIOS POR M2. ARMÉ UNA PROPUESTA PARA HACER EL CÁLCULO POR HECTÁREA QUE ES MÁS O MENOS UNA CUADRA Y ME PARECÍAN MÁS INFORMATIVOS LOS NÚMEROS Y MÁS CLAROS TAMBIÉN EN EL MAPA. SI NO TE CIERRA IGUAL, LO DEVUELVO A M2, ES BORRAR Y COPIAR NOMÁS. CONTAME QUÉ TE PARECE.
ggplot(datos_comunas_mapa)+ geom_sf(aes(fill=porcentaje_est), color=“#8a8a8a”) + labs(title=“Porcentaje de establecimientos por Comuna sobre el total de la Ciudad”, subtitle=“Valores relativos”, fill=“Porcentaje de establecimientos”, caption=“Fuente: datos provistos por el GCABA”)+ scale_fill_distiller(palette = “Blues”, direction=1)+ theme_light()+theme(title=element_text(face=‘bold’), legend.position=‘bottom’)
ggplot(concentra_com_map) +
geom_sf(aes(fill = est_hec), color = "darkgray") +
labs(title = "Establecimientos/hectárea por Barrio",
fill = "Concentración establecimientos") +
scale_fill_distiller(palette = "Blues", direction=1)+
theme_light()+theme(title=element_text(face='bold'),
legend.position='bottom') +
geom_sf_label(aes(label = as.numeric(round(est_hec, 3))), size = 2,
label.padding = unit(0.1, "lines"), # Elimina el relleno del recuadro
label.r = unit(1, "pt"), # Elimina el tamaño del recuadro
) +
theme_minimal() +
theme(title = element_text(face = 'bold'),
legend.position = 'bottom',
legend.direction = 'horizontal',
legend.box = 'horizontal',
axis.title = element_blank(),
axis.text = element_blank(),
legend.text = element_text(face = 'bold', color = 'black', size = 12))
## Warning in st_point_on_surface.sfc(sf::st_zm(x)): st_point_on_surface may not
## give correct results for longitude/latitude data
#03-PARTE NATHY
¿Existe una relación entre la densidad de establecimientos económicos y la proximidad a las estaciones de subte en la Ciudad Autónoma de Buenos Aires? ¿Las áreas cercanas a las estaciones de subte tienden a tener una mayor concentración de comercios en comparación con otras zonas de la ciudad?
pasajeros_barrio <- st_join(estaciones_subte,barrios)
#NATHY, NO SÉ SI QEURÍAS PONER ESTE PEDAZO DE CÓDIGO PARA ALGO O LO BORRAMOS?
viajes_por_molinete <- viajes_molinete %>% mutate(FECHA =
as.Date(FECHA, format = “formato_de_fecha_actual”), year = format(FECHA,
“%Y”)) %>%
group_by(year, ESTACION) %>%
summarise(total_viajes = n()) ##
paged_table(viajes_molinete2020)
pasajeros_por_barrio <- viajes_molinete2020 %>%
group_by() %>%
summarise(total_viajes = sum())
pasajeros_2020 <- left_join(viajes_molinete2020, pasajeros_barrio, by="estacion")
paged_table(viajes_molinete2020)
#04-PARTE FEDE
¿Cuál es la comuna con mayor cantidad de establecimientos y que relación tiene con el valor de venta y alquiler del m2 de las viviendas?
Para ello, haremos un mapa coropleptico interactivo donde se puede observar la distribución de locales por comuna y al cliquear en ellas se observa el valor promedio del m2 en USD con su varianza para operaciones venta y alquiler
est_comunas <- maestro %>%
group_by(comuna) %>%
summarise(cantidad_establecimientos = n_distinct(id_establecimiento))
Comuna2 <- comunas%>%
select(3,7) %>%
left_join(est_comunas,by= "comuna")
properati <- read.csv("00-data/amba_properati2021.csv",
stringsAsFactors = TRUE) %>%
filter(provincia == "CABA")
prop_VyA <- properati %>%
mutate(partido = str_remove(partido,"Comuna ")) %>%
rename(comuna = partido) %>%
select(-(1:2),-4,-6,-9,-(12:13)) %>%
mutate(valor_m2 = price / surface_total) %>%
mutate(valor_m2 = ifelse(currency == 'ARS', valor_m2/ 100.75,valor_m2)) %>%
group_by_at(vars(comuna, operation_type),.groups = "keep") %>%
summarise(Media = mean(valor_m2), Varianza = var(valor_m2)) %>%
pivot_wider(id_cols = comuna, names_from = operation_type,values_from = c(Media, Varianza),names_glue = "{operation_type}_{.value}") %>%
mutate(comuna = factor(comuna))
## `summarise()` has grouped output by 'comuna'. You can override using the
## `.groups` argument.
general <- Comuna2 %>%
left_join(prop_VyA,by="comuna") %>%
mutate_at(vars(Alquiler_Media:Venta_Varianza), ~round(., 2))
Genero escala de colores según cantidad de establecimientos por columna
pal <- colorNumeric("YlOrRd", domain = general$cantidad_establecimientos)
leaflet(st_zm(comunas) %>% st_transform(4326)) %>%
addTiles() %>%
#setView(lat=-34.5828, lng=-58.3792,zoom=16)%>%
addProviderTiles(providers$CartoDB.Positron, group = "OSM",
options = providerTileOptions(minzoom = 1, maxzoom = 15)) %>%
addProviderTiles(providers$Esri.WorldImagery, group = "Satelite") %>%
addLayersControl(
baseGroups = c("OSM","Satelite"),
overlayGroups = c("Establecimientos por comuna"))%>%
addPolygons(data = (st_zm(general) %>% st_transform(4326)),
fillColor = ~pal(cantidad_establecimientos),
weight = 0.5,
color = "black",
fillOpacity = 0.5,
popup = paste("Comuna:", general$comuna,"<br>",
"VTA: Valor prom. m2 en = USD", general$Venta_Media,"<br>",
"VTA: Var.valor m2 en = USD", general$Venta_Varianza,"<br>",
"ALQ: Valor prom. m2 en = USD", general$Alquiler_Media,"<br>",
"ALQ: Var.valor m2 en = USD", general$Alquiler_Varianza,"<br>"),
group = "Establecimientos por comuna") %>%
addLegend(pal=pal,values=~general$cantidad_establecimientos, title="Establecimientos <br> por comuna")
A partir de la interacción con el mapa se puede evidenciar como las Comunas 14 y 13 tienen los mayores valores promedios en USD por m2, de venta y alquiler, mientras que en términos de establecimientos por comuna se encuentran en el 3er y 5to lugar.
Asimismo las comunas 8 y 6 son son las que menos establecimiento tienen mientras que en términos de valores del m2 para venta la comuna 8 se encuentra con el menor valor pero la comuna 6 es la quinta de mayor valor de venta
#05-PARTE ANGIE
¿Cuántos rubros hay en la ciudad y cómo son sus porcentajes? ¿Cuáles son los rubros predominantes?
Utilizando la información de maestro, creamos un df nuevo donde se evidencian todos los rubros de manera única con el porcentaje que representan sobre el total de CABA:
porcentajes_rubros <- data.frame(table(maestro$rubro) / nrow(maestro) * 100) %>%
arrange(-Freq) %>%
rename( "rubro" = "Var1",
"%" = "Freq") %>%
mutate_if(is.numeric,round,digits = 2)
Vemos así que los rubros presentes son 2920:
print(nrow(porcentajes_rubros))
## [1] 2920
Que los 6 predominantes son los siguientes:
datatable(head(porcentajes_rubros))
Y podemos ver que los porcentajes van desde virtualmente un 0% a 4,51%, siendo la mediana un número muy cercano al 0 y la media 0,03:
print(summary(porcentajes_rubros))
## rubro
## 5 : 1
## ACABADO DE PRODUCTOS TEXTILES : 1
## ACABADO DE TEJIDOS DE PUNTO : 1
## ACTIVIDADES TIC SEGÚN LEY 2972 - PRODUCCIÓN DE HARDWARE: 1
## ACTIVIDADES TIC SEGÚN LEY 2972 - PRODUCCIÓN DE SOFTWARE: 1
## ADITAMENTO FIJO (CAFE BAR) EN LOC. ESPEC.(ACT. ACC.) : 1
## (Other) :2914
## %
## Min. :0.00000
## 1st Qu.:0.00000
## Median :0.00000
## Mean :0.03369
## 3rd Qu.:0.00000
## Max. :4.51000
##
##rubros en distritos economicos
En esta sección buscamos identificar a escala barrial qué presencia tienen los establecimientos con actividades vinculadas a un distrito económico. Su representatividad en dichos sectores en comparación con el resto de los barrios.
Primero vemos el solapamiento que se da entre barrios y distritos económicos para así asignarle dicha información:
# Perform intersection
barrios_distritos <- st_intersection(barrios, distritos_economicos)
## Warning: attribute variables are assumed to be spatially constant throughout
## all geometries
# Calculate the area of intersection and area of barrios
barrios_distritos$intersection_area <- st_area(st_make_valid(barrios_distritos))
barrios_distritos <- barrios_distritos %>%
mutate("porcentaje_interseccion_distritos" =
as.numeric(intersection_area)/as.numeric(area)) %>%
mutate_if(is.numeric,round,digits = 2) %>%
rename("distrito"="nombre")
barrios_distritos <- data.frame(select(barrios_distritos, "barrio", "distrito", "porcentaje_interseccion_distritos" )) %>%
st_drop_geometry()
barrios <- left_join(barrios, barrios_distritos, by = "barrio")
barrios$porcentaje_interseccion_distritos <- replace(barrios$porcentaje_interseccion_distritos, is.na(barrios$porcentaje_interseccion_distritos), 0)
Nos quedamos con las observaciones donde la superposición de cada barrio con distritos economicos es 0% o mayor a 85% para no tomar datos intermedios donde no podemos distribuir la información correctamente:
maestro_dis_syn <- left_join(maestro,
subset(barrios %>% st_drop_geometry(),
select = c(1, 5, 6)),
by = "barrio") %>%
mutate(distrito = if_else( distrito == "NUEVA POMPEYA" & porcentaje_interseccion_distritos== 0, NA, distrito))
## Warning in left_join(maestro, subset(barrios %>% st_drop_geometry(), select = c(1, : Detected an unexpected many-to-many relationship between `x` and `y`.
## ℹ Row 9 of `x` matches multiple rows in `y`.
## ℹ Row 11 of `y` matches multiple rows in `x`.
## ℹ If a many-to-many relationship is expected, set `relationship =
## "many-to-many"` to silence this warning.
maestro_dis_syn <- filter(maestro_dis_syn, porcentaje_interseccion_distritos>0.80 | porcentaje_interseccion_distritos == 0.00) %>%
mutate_if(is.numeric,round,digits = 2) %>%
mutate(deporte = ifelse(grepl("DEPOR|GIMN|CANCHA", rubro), 1, 0))
#PARTE QUE TENGO QUE TERMINAR