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