Lo primero que se hace es importar los 2 archivos, el de excel y el shapefile
library(readxl)
library(sf)
library(dplyr)
library(patchwork)
library(ggplot2)
# # Ruta del archivo Excel
# ruta_excel <- "E:/Jorge Gómez/Maestria en ciencia de datos/Segundo semestre/Analisis de informacion geografica y espacial/Modulo 1/Unidad 1/Casos/EncuestaOrigenDestino.xlsx"
# ruta_shp <- "E:/Jorge Gómez/Maestria en ciencia de datos/Segundo semestre/Analisis de informacion geografica y espacial/Modulo 1/Unidad 1/Casos/cali/Comunas.shp"
# # archivo Excel
# datos_excel <- read_excel(ruta_excel, sheet = 1)
#
# # archivo .shp
# datos_shp <- st_read(dsn = ruta_shp)
datos_excel <- read_excel("EncuestaOrigenDestino.xlsx", sheet = 1)
datos_shp <- st_read(dsn = "Comunas.shp")
## Reading layer `Comunas' from data source `/cloud/project/Comunas.shp' using driver `ESRI Shapefile'
## Simple feature collection with 22 features and 4 fields
## Geometry type: POLYGON
## Dimension: XY
## Bounding box: xmin: 1053868 ymin: 860190.2 xmax: 1068492 ymax: 879441.5
## Projected CRS: MAGNA_Colombia_Cali
datos_shp2 <- as.data.frame(datos_shp)
datos_excel <- as.data.frame(datos_excel)
Despues se realiza una limpieza a la variable de comuna, eliminando aquellos registros con la palabra “Fuera de Cali” el cual no es útil para el análisis en cuestión
datos_excel <- subset(datos_excel, !datos_excel[["comuna origen"]] == "Fuera de Cali")
datos_excel <- subset(datos_excel, !datos_excel[["comuna destino"]] == "Fuera de Cali")
datos_excel$`comuna origen` <- as.numeric(datos_excel$`comuna origen`)
datos_excel$`comuna origen` <- as.numeric(datos_excel$`comuna destino`)
Una vez limpia la base, se procede a crear las 8 bases de datos, una para cada tipo de vehículo. Posteriormente se hace el conteo por agrupaciones del número de viajes por comunas.
df_origen_bici <- subset(datos_excel, datos_excel[["TIPO DE VEHÍCULO"]] == 1)
df_origen_moto <- subset(datos_excel, datos_excel[["TIPO DE VEHÍCULO"]] == 2)
df_origen_auto <- subset(datos_excel, datos_excel[["TIPO DE VEHÍCULO"]] == 3)
df_destino_bici <- subset(datos_excel, datos_excel[["TIPO DE VEHÍCULO"]] == 1)
df_destino_moto <- subset(datos_excel, datos_excel[["TIPO DE VEHÍCULO"]] == 2)
df_destino_auto <- subset(datos_excel, datos_excel[["TIPO DE VEHÍCULO"]] == 3)
# 1. agrupacion
# De Destino
datos_agrupados1 <- datos_excel %>%
group_by(`comuna destino`) %>%
summarise(cantidad_registros = n())
datos_agrupados2 <- df_destino_bici %>%
group_by(`comuna destino`) %>%
summarise(cantidad_registros = n())
datos_agrupados3 <- df_destino_moto %>%
group_by(`comuna destino`) %>%
summarise(cantidad_registros = n())
datos_agrupados4 <- df_destino_auto %>%
group_by(`comuna destino`) %>%
summarise(cantidad_registros = n())
# De origen
datos_agrupados5 <- datos_excel %>%
group_by(`comuna origen`) %>%
summarise(cantidad_registros = n())
datos_agrupados6 <- df_origen_bici %>%
group_by(`comuna origen`) %>%
summarise(cantidad_registros = n())
datos_agrupados7 <- df_destino_moto %>%
group_by(`comuna origen`) %>%
summarise(cantidad_registros = n())
datos_agrupados8 <- df_destino_auto %>%
group_by(`comuna origen`) %>%
summarise(cantidad_registros = n())
datos_agrupados1$`comuna destino` <- as.numeric(datos_agrupados1$`comuna destino`)
datos_agrupados2$`comuna destino` <- as.numeric(datos_agrupados2$`comuna destino`)
datos_agrupados3$`comuna destino` <- as.numeric(datos_agrupados3$`comuna destino`)
datos_agrupados4$`comuna destino` <- as.numeric(datos_agrupados4$`comuna destino`)
datos_agrupados5$`comuna origen` <- as.numeric(datos_agrupados5$`comuna origen`)
datos_agrupados6$`comuna origen` <- as.numeric(datos_agrupados6$`comuna origen`)
datos_agrupados7$`comuna origen` <- as.numeric(datos_agrupados7$`comuna origen`)
datos_agrupados8$`comuna origen` <- as.numeric(datos_agrupados8$`comuna origen`)
Una vez realizado esto, se une las bases de los conteos por agrupaciones con el archivo shapefile, de tal forma que sirva como insumo para crear los diferentes mapas.
# 2. Uniones
df_union1 <- left_join(datos_shp2, datos_agrupados1, by = c("comuna" = "comuna destino"))
df_union2 <- left_join(datos_shp2, datos_agrupados2, by = c("comuna" = "comuna destino"))
df_union3 <- left_join(datos_shp2, datos_agrupados3, by = c("comuna" = "comuna destino"))
df_union4 <- left_join(datos_shp2, datos_agrupados4, by = c("comuna" = "comuna destino"))
df_union5 <- left_join(datos_shp2, datos_agrupados5, by = c("comuna" = "comuna origen"))
df_union6 <- left_join(datos_shp2, datos_agrupados6, by = c("comuna" = "comuna origen"))
df_union7 <- left_join(datos_shp2, datos_agrupados7, by = c("comuna" = "comuna origen"))
df_union8 <- left_join(datos_shp2, datos_agrupados8, by = c("comuna" = "comuna origen"))
df_mapa1 <- st_as_sf(df_union1)
df_mapa2 <- st_as_sf(df_union2)
df_mapa3 <- st_as_sf(df_union3)
df_mapa4 <- st_as_sf(df_union4)
df_mapa5 <- st_as_sf(df_union5)
df_mapa6 <- st_as_sf(df_union6)
df_mapa7 <- st_as_sf(df_union7)
df_mapa8 <- st_as_sf(df_union8)
Por último, se crean los mapas para cada uno de los 8 casos.
# Combina los mapas destino en una sola vista
mapa_destino_todos <- ggplot(data = df_mapa1) +
geom_sf(aes(fill = cantidad_registros)) +
scale_fill_gradient(name = "Cantidad de viajes", low = "lightblue", high = "darkblue") +
labs(title = "Mapa destino todos los vehículos")
mapa_destino_bicicleta <- ggplot(data = df_mapa2) +
geom_sf(aes(fill = cantidad_registros)) +
scale_fill_gradient(name = "Cantidad de viajes", low = "lightblue", high = "darkblue") +
labs(title = "Mapa destino bicicleta")
mapa_destino_moto <- ggplot(data = df_mapa3) +
geom_sf(aes(fill = cantidad_registros)) +
scale_fill_gradient(name = "Cantidad de viajes", low = "lightblue", high = "darkblue") +
labs(title = "Mapa destino moto")
mapa_destino_carro <- ggplot(data = df_mapa4) +
geom_sf(aes(fill = cantidad_registros)) +
scale_fill_gradient(name = "Cantidad de viajes", low = "lightblue", high = "darkblue") +
labs(title = "Mapa destino carro")
# Combinar los mapas en una sola vista
mapa_destino_combinado <- mapa_destino_todos + mapa_destino_bicicleta +
mapa_destino_moto + mapa_destino_carro
# Mostrar el mapa combinado
mapa_destino_combinado
# Combina los mapas de origen en una sola vista
mapa_origen_todos <- ggplot(data = df_mapa5) +
geom_sf(aes(fill = cantidad_registros)) +
scale_fill_gradient(name = "Cantidad de viajes", low = "lightblue", high = "darkblue") +
labs(title = "Mapa origen todos los vehículos")
mapa_origen_bicicleta <- ggplot(data = df_mapa6) +
geom_sf(aes(fill = cantidad_registros)) +
scale_fill_gradient(name = "Cantidad de viajes", low = "lightblue", high = "darkblue") +
labs(title = "Mapa origen bicicleta")
mapa_origen_moto <- ggplot(data = df_mapa7) +
geom_sf(aes(fill = cantidad_registros)) +
scale_fill_gradient(name = "Cantidad de viajes", low = "lightblue", high = "darkblue") +
labs(title = "Mapa origen moto")
mapa_origen_carro <- ggplot(data = df_mapa8) +
geom_sf(aes(fill = cantidad_registros)) +
scale_fill_gradient(name = "Cantidad de viajes", low = "lightblue", high = "darkblue") +
labs(title = "Mapa origen carro")
# Combinar los mapas en una sola vista
mapa_origen_combinado <- mapa_origen_todos + mapa_origen_bicicleta +
mapa_origen_moto + mapa_origen_carro
# Mostrar el mapa combinado
mapa_origen_combinado
Conclusiones análisis de mapas
Se observa que tanto para el mapa de origen como el destino, el vehículo con mayor presencia en viajes es la moto
Se observa que tanto para el mapa de origen como el destino, la comuna que recibe más viajes es la comuna 2
A su vez, la que recibe menos viajes es la comuna 12
El número de viajes tiende a concentrarse más hacia las comunas del occidente, norte y sur