En este documento, se presenta el paso a paso para llevar a cabo el requerimiento solicitado para cumplimiento de la actividad del módulo 1
Se procede con la carga a R studio de la base de datos suministrada:
suppressMessages(library(readxl))
datos<- read_excel("C:/Users/jlafaurie/Dropbox/Datos personales/Maestría ciencia de datos/2. Segundo Semestre/4. Análisis de información geográfica y espacial/Módulo 1/Unidad 1/Casos/EncuestaOrigenDestino.xlsx",
sheet = "Hoja1")
## New names:
## • `MUNICIPIO` -> `MUNICIPIO...7`
## • `DEPARTAMENTO / LOCALIDAD / COMUNA / DISTRITO / BARRIO / VEREDA / HITO /
## DIRECCIÓN` -> `DEPARTAMENTO / LOCALIDAD / COMUNA / DISTRITO / BARRIO / VEREDA
## / HITO / DIRECCIÓN...8`
## • `MUNICIPIO` -> `MUNICIPIO...11`
## • `DEPARTAMENTO / LOCALIDAD / COMUNA / DISTRITO / BARRIO / VEREDA / HITO /
## DIRECCIÓN` -> `DEPARTAMENTO / LOCALIDAD / COMUNA / DISTRITO / BARRIO / VEREDA
## / HITO / DIRECCIÓN...12`
## • `OTRO ¿CUÁL?` -> `OTRO ¿CUÁL?...17`
## • `OTRO ¿CUÁL?` -> `OTRO ¿CUÁL?...24`
Se selecciona únicamente la pestaña “Hoja 1” y las columnas “comuna origen”, “comuna destino”, y “TIPO DE VEHÍCULO”, acorde al requerimiento del informe solicitado. Adicionalmente, se almacenan las columnas: “Codigo Origen_SDG” y “Codigo Destino_SDG”, que permitirán establecer el referenciamiento geográfico posteriormente:
suppressMessages(library(dplyr))
suppressMessages(library(openxlsx))
# Seleccionar solo las columnas deseadas
datos_seleccionados <- datos %>%
select(`comuna origen`, `comuna destino`, `TIPO DE VEHÍCULO`,`Codigo Origen_SDG`,`Codigo Destino_SDG`)
datos_seleccionados <- datos_seleccionados %>%
rename(Codigo_Origen_SDG = `Codigo Origen_SDG`,
comuna_origen = `comuna origen`,
comuna_destino = `comuna destino`,
Codigo_Destino_SDG = `Codigo Destino_SDG`,
TIPO_DE_VEHÍCULO = `TIPO DE VEHÍCULO`)
# `datos_seleccionados` a numérico
datos_seleccionados$Codigo_Origen_SDG <- as.integer(datos_seleccionados$Codigo_Origen_SDG)
datos_seleccionados$Codigo_Destino_SDG <- as.integer(datos_seleccionados$Codigo_Destino_SDG)
datos_seleccionados$TIPO_DE_VEHÍCULO <- as.integer(datos_seleccionados$TIPO_DE_VEHÍCULO)
print(datos_seleccionados)
## # A tibble: 35,054 × 5
## comuna_origen comuna_destino TIPO_DE_VEHÍCULO Codigo_Origen_SDG
## <chr> <chr> <int> <int>
## 1 02 22 2 218
## 2 Fuera de Cali 19 3 4102
## 3 Fuera de Cali 03 2 3102
## 4 Fuera de Cali 09 2 3102
## 5 Fuera de Cali 02 2 3202
## 6 Fuera de Cali 02 3 3202
## 7 Fuera de Cali 17 3 3115
## 8 Fuera de Cali Fuera de Cali 2 3102
## 9 Fuera de Cali 02 2 3102
## 10 Fuera de Cali 02 3 3102
## # ℹ 35,044 more rows
## # ℹ 1 more variable: Codigo_Destino_SDG <int>
str(datos_seleccionados)
## tibble [35,054 × 5] (S3: tbl_df/tbl/data.frame)
## $ comuna_origen : chr [1:35054] "02" "Fuera de Cali" "Fuera de Cali" "Fuera de Cali" ...
## $ comuna_destino : chr [1:35054] "22" "19" "03" "09" ...
## $ TIPO_DE_VEHÍCULO : int [1:35054] 2 3 2 2 2 3 3 2 2 3 ...
## $ Codigo_Origen_SDG : int [1:35054] 218 4102 3102 3102 3202 3202 3115 3102 3102 3102 ...
## $ Codigo_Destino_SDG: int [1:35054] 2216 1904 302 910 223 223 1615 3401 218 218 ...
Teniendo en cuenta que en las variables comuna origen y comuna destino, una opción de registro es “Fuera de Cali”, esta opción se convierte a númerica y se codifica con el código 99:
suppressMessages(library(ggplot2))
# Reemplazar "Fuera de Cali" con 99 en las columnas 'comuna origen' y 'comuna destino'
datos_seleccionados <- datos_seleccionados %>%
mutate(`comuna_origen` = ifelse(`comuna_origen` == "Fuera de Cali", 99, as.numeric(as.character(`comuna_origen`))),
`comuna_destino` = ifelse(`comuna_destino` == "Fuera de Cali", 99, as.numeric(as.character(`comuna_destino`))))
# Convertir a numérica las variables comuna_origen y comuna_destino
datos_seleccionados$comuna_origen <- as.integer(datos_seleccionados$comuna_origen)
datos_seleccionados$comuna_destino <- as.integer(datos_seleccionados$comuna_destino)
datos_seleccionados2 <- datos_seleccionados
# Convertir 'TIPO DE VEHÍCULO' a factor con las etiquetas adecuadas
datos_seleccionados$`TIPO_DE_VEHÍCULO` <- factor(datos_seleccionados$`TIPO_DE_VEHÍCULO`,
levels = c(1, 2, 3),
labels = c("Bicicleta", "Moto", "Automovil"))
Una vez se tiene la base de datos procesada, se realiza un análisis descriptivo de los datos:
# 1.1 Frecuencia de cada tipo de vehículo
frecuencias1 <- table(datos_seleccionados$`TIPO_DE_VEHÍCULO`)
print(frecuencias1)
##
## Bicicleta Moto Automovil
## 1731 16077 14100
# Convertir la tabla de frecuencias a un data.frame
frecuencias_df1 <- as.data.frame(frecuencias1)
# Asegurarse de que los nombres de las columnas en el data.frame son los correctos para ggplot
names(frecuencias_df1) <- c("TIPO_DE_VEHÍCULO", "Frecuencia")
# Calcular la posición acumulativa para cada etiqueta
frecuencias_df1$label_position <- cumsum(frecuencias_df1$Frecuencia) - (frecuencias_df1$Frecuencia / 2)
# Gráfico de pastel con etiquetas correctamente posicionadas
ggplot(frecuencias_df1, aes(x = "", y = Frecuencia, fill = `TIPO_DE_VEHÍCULO`)) +
geom_bar(width = 1, stat = "identity") +
coord_polar(theta = "y") +
theme_void() +
labs(fill = "Tipo de Vehículo") +
geom_text(aes(y = label_position, label = Frecuencia), color = "black")
# 1.2 Frecuencia de cada comuna de origen
frecuencias2 <- table(datos_seleccionados$`comuna_origen`)
print(frecuencias2)
##
## 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
## 672 794 2968 2121 1493 664 998 734 1124 952 1401 925 348 1238 685 1171
## 16 17 18 19 20 21 22 99
## 993 2377 1536 2850 733 818 1153 6306
if(is.numeric(datos_seleccionados$`comuna_origen`)) {
resumen_origen <- summary(as.numeric(as.character(datos_seleccionados$`comuna_origen`)))
print(resumen_origen)
}
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.00 6.00 15.00 26.88 20.00 99.00
# Convertir la tabla de frecuencias a un data.frame
frecuencias_df2 <- as.data.frame(frecuencias2)
# Asegurarse de que los nombres de las columnas en el data.frame son los correctos para ggplot
names(frecuencias_df2) <- c("comuna_origen", "Frecuencia")
# Graficar la tabla de frecuencia
ggplot(frecuencias_df2, aes(x = `comuna_origen`, y = Frecuencia)) +
geom_bar(stat = "identity") +
theme_minimal() +
labs(title = "Frecuencia de comuna de origen", x = "Comuna Origen", y = "Frecuencia") +
geom_text(aes(label = Frecuencia), vjust = -0.5)
# 1.3 Frecuencia de cada comuna de destino
frecuencias3 <- table(datos_seleccionados$`comuna_destino`)
print(frecuencias3)
##
## 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
## 788 230 4810 3859 1856 522 716 748 1025 1279 927 564 246 673 379 579
## 16 17 18 19 20 21 22 99
## 743 2164 662 3158 351 515 1860 6400
if(is.numeric(datos_seleccionados$`comuna_destino`)) {
resumen_destino <- summary(as.numeric(as.character(datos_seleccionados$`comuna_destino`)))
print(resumen_destino)
}
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.0 3.0 12.0 26.1 21.0 99.0
# Convertir la tabla de frecuencias a un data.frame
frecuencias_df3 <- as.data.frame(frecuencias3)
# Asegurarse de que los nombres de las columnas en el data.frame son los correctos para ggplot
names(frecuencias_df3) <- c("comuna_destino", "Frecuencia")
# Graficar la tabla de frecuencia
ggplot(frecuencias_df3, aes(x = `comuna_destino`, y = Frecuencia)) +
geom_bar(stat = "identity") +
theme_minimal() +
labs(title = "Frecuencia de comuna de destino", x = "Comuna Destino", y = "Frecuencia") +
geom_text(aes(label = Frecuencia), vjust = -0.5)
Con base en los números presentados, podemos inferir lo siguiente:
Automóvil: Con 16,077 viajes, es el medio de transporte más utilizado en el conjunto de datos. Esto podría indicar una preferencia por los automóviles, quizás debido a la comodidad, la distancia de los viajes, la infraestructura de la ciudad, o la percepción de seguridad o estatus.
Moto: Con 14,100 viajes, la moto es también un medio de transporte popular. Su uso puede estar relacionado con factores como la eficiencia en el tráfico, el costo de mantenimiento más bajo en comparación con los automóviles, y la facilidad de estacionamiento.
Bicicleta: Se utilizó para 1,731 viajes, lo que representa la menor proporción. Esto podría sugerir limitaciones en la infraestructura, como la falta de carriles seguros, o que las distancias de viaje son demasiado largas para la bicicleta.
Una vez procesada la base de datos y realizado la revisión de las variables, procedemos con la creación de los 8 mapas solicitados, teniendo cuenta los requisitos establecidos y códigos brindados:
Como primera instancia, se carga la información de la base de datos brindada, relacionada con los shapes de las comunas de cali:
# Cargar los paquetes
suppressMessages(library(raster))
suppressMessages(library(sf))
comunas <- shapefile("C:/Users/jlafaurie/Dropbox/Datos personales/Maestría ciencia de datos/2. Segundo Semestre/4. Análisis de información geográfica y espacial/Módulo 1/Unidad 1/Casos/cali/Comunas.shp")
comunas
## class : SpatialPolygonsDataFrame
## features : 22
## extent : 1053868, 1068492, 860190.2, 879441.5 (xmin, xmax, ymin, ymax)
## crs : +proj=tmerc +lat_0=3.441883333 +lon_0=-76.5205625 +k=1 +x_0=1061900.18 +y_0=872364.63 +a=6379137 +rf=298.257222101 +units=m +no_defs
## variables : 4
## names : OBJECTID, gid, comuna, nombre
## min values : 1, 89, 1, Comuna 1
## max values : 22, 110, 22, Comuna 9
plot(comunas)
comuna202122=comunas[comunas$comuna>=20,]
plot(comunas)
Una vez presentado el mapa de las comunas, se procede con la presentación de la tabla contenida en esta base de datos:
# Mostrar la tabla
tabla=comunas@data
head(tabla,20)
## OBJECTID gid comuna nombre
## 1 1 107 2 Comuna 2
## 2 2 108 1 Comuna 1
## 3 3 109 3 Comuna 3
## 4 4 110 19 Comuna 19
## 5 5 103 15 Comuna 15
## 6 6 104 17 Comuna 17
## 7 7 105 18 Comuna 18
## 8 8 106 22 Comuna 22
## 9 9 89 6 Comuna 6
## 10 10 90 4 Comuna 4
## 11 11 91 5 Comuna 5
## 12 12 92 7 Comuna 7
## 13 13 93 8 Comuna 8
## 14 14 94 9 Comuna 9
## 15 15 95 21 Comuna 21
## 16 16 96 13 Comuna 13
## 17 17 97 12 Comuna 12
## 18 18 98 14 Comuna 14
## 19 19 99 11 Comuna 11
## 20 20 100 10 Comuna 10
suppressMessages(library(sf))
suppressMessages(library(dplyr))
suppressMessages(library(ggplot2))
A continuación, se realiza la transformación de la base de datos en un sf y se cambia el crs a 4326 (Cali)
# Asumiendo que comunas es un SpatialPolygonsDataFrame y quieres transformarlo en un sf object
comunas_sf <- st_as_sf(comunas)
# Si sabes que el CRS de tus datos espaciales es WGS 84 (EPSG:4326), lo estableces directamente:
st_crs(comunas_sf) <- 4326
# Si necesitas cambiar el CRS de comunas_sf para que coincida con otro conjunto de datos o preferencias:
comunas_sf <- st_transform(comunas_sf, crs = 4326) # Reemplaza 4326 con el código EPSG deseado
# Asegúrate de que ahora comunas_sf tiene el CRS que estableciste
print(st_crs(comunas_sf))
## Coordinate Reference System:
## User input: EPSG:4326
## wkt:
## GEOGCRS["WGS 84",
## ENSEMBLE["World Geodetic System 1984 ensemble",
## MEMBER["World Geodetic System 1984 (Transit)"],
## MEMBER["World Geodetic System 1984 (G730)"],
## MEMBER["World Geodetic System 1984 (G873)"],
## MEMBER["World Geodetic System 1984 (G1150)"],
## MEMBER["World Geodetic System 1984 (G1674)"],
## MEMBER["World Geodetic System 1984 (G1762)"],
## MEMBER["World Geodetic System 1984 (G2139)"],
## ELLIPSOID["WGS 84",6378137,298.257223563,
## LENGTHUNIT["metre",1]],
## ENSEMBLEACCURACY[2.0]],
## PRIMEM["Greenwich",0,
## ANGLEUNIT["degree",0.0174532925199433]],
## CS[ellipsoidal,2],
## AXIS["geodetic latitude (Lat)",north,
## ORDER[1],
## ANGLEUNIT["degree",0.0174532925199433]],
## AXIS["geodetic longitude (Lon)",east,
## ORDER[2],
## ANGLEUNIT["degree",0.0174532925199433]],
## USAGE[
## SCOPE["Horizontal component of 3D system."],
## AREA["World."],
## BBOX[-90,-180,90,180]],
## ID["EPSG",4326]]
plot(comunas_sf)
Después de la tranformación, se procede con la creación de los 8 mapas:
Requerimiento: Graficar mapa que indique la cantidad de viajes que salen de la comuna de origen en general (Incluye los 3 medios de transporte)
suppressMessages(library(scales))
suppressMessages(library(knitr))
# Verificar la estructura del nuevo data frame sin NAs
str(datos_seleccionados2)
## tibble [35,054 × 5] (S3: tbl_df/tbl/data.frame)
## $ comuna_origen : int [1:35054] 2 99 99 99 99 99 99 99 99 99 ...
## $ comuna_destino : int [1:35054] 22 19 3 9 2 2 17 99 2 2 ...
## $ TIPO_DE_VEHÍCULO : int [1:35054] 2 3 2 2 2 3 3 2 2 3 ...
## $ Codigo_Origen_SDG : int [1:35054] 218 4102 3102 3102 3202 3202 3115 3102 3102 3102 ...
## $ Codigo_Destino_SDG: int [1:35054] 2216 1904 302 910 223 223 1615 3401 218 218 ...
# Paso 1: Totalizar los datos para contar el número de viajes por comuna de origen
viajes_por_comuna_origen <- datos_seleccionados2 %>%
group_by(comuna_origen) %>%
summarise(Numero_de_viajes = n())
# Paso 2: Unir los datos totalizados con las comunas
comunas_con_viajes <- left_join(comunas_sf, viajes_por_comuna_origen, by = c("comuna" = "comuna_origen"))
# Paso 3: Crear el mapa
head(comunas_con_viajes,22)
## Simple feature collection with 22 features and 5 fields
## Geometry type: POLYGON
## Dimension: XY
## Bounding box: xmin: 1053868 ymin: 860190.2 xmax: 1068492 ymax: 879441.5
## Geodetic CRS: WGS 84
## First 10 features:
## OBJECTID gid comuna nombre Numero_de_viajes
## 1 1 107 2 Comuna 2 2968
## 2 2 108 1 Comuna 1 794
## 3 3 109 3 Comuna 3 2121
## 4 4 110 19 Comuna 19 2850
## 5 5 103 15 Comuna 15 1171
## 6 6 104 17 Comuna 17 2377
## 7 7 105 18 Comuna 18 1536
## 8 8 106 22 Comuna 22 1153
## 9 9 89 6 Comuna 6 998
## 10 10 90 4 Comuna 4 1493
## geometry
## 1 POLYGON ((1059648 874236.3,...
## 2 POLYGON ((1054094 875172.8,...
## 3 POLYGON ((1061757 874615.5,...
## 4 POLYGON ((1057817 873269.4,...
## 5 POLYGON ((1065485 869864.1,...
## 6 POLYGON ((1061675 868320.9,...
## 7 POLYGON ((1059061 867223.6,...
## 8 POLYGON ((1059486 864976.4,...
## 9 POLYGON ((1065143 879409.5,...
## 10 POLYGON ((1063833 877507.1,...
ggplot(data = comunas_con_viajes) +
geom_sf(aes(fill = Numero_de_viajes), color = NA) +
geom_sf_text(aes(label = nombre), check_overlap = TRUE, size = 3) + # Añade nombres de comunas
scale_fill_viridis_c(name = "Número de Viajes", breaks = pretty_breaks(n = 5)) +
labs(title = "Número de viajes por comuna de origen en general") +
theme_minimal()
#Imprimir tabla
# Usar kable para imprimir una tabla formateada
kable(viajes_por_comuna_origen)
comuna_origen | Numero_de_viajes |
---|---|
0 | 672 |
1 | 794 |
2 | 2968 |
3 | 2121 |
4 | 1493 |
5 | 664 |
6 | 998 |
7 | 734 |
8 | 1124 |
9 | 952 |
10 | 1401 |
11 | 925 |
12 | 348 |
13 | 1238 |
14 | 685 |
15 | 1171 |
16 | 993 |
17 | 2377 |
18 | 1536 |
19 | 2850 |
20 | 733 |
21 | 818 |
22 | 1153 |
99 | 6306 |
Análisis de la Gráfica:
Se observa una distribución desigual del número de viajes entre las comunas. Algunas comunas, como la Comuna 19, muestran una cantidad significativamente mayor de viajes. Esto podría indicar áreas de alta actividad o salidas de transporte importantes.
Las comunas con colores más oscuros indican una mayor cantidad de viajes. Estas zonas pueden ser centros urbanos con una alta concentración de lugares de trabajo, educación o comercio, lo que resulta en una mayor demanda de transporte.
Las áreas en colores más claros reflejan una menor cantidad de viajes. Estas pueden ser zonas residenciales, áreas con menor densidad de población, o posiblemente áreas con menos accesibilidad al transporte público.
Requerimiento: Graficar mapa que indique la cantidad de viajes que salen de la comuna de origen relacinado con el transporte: Bicicleta (Código 1)
suppressMessages(library(scales))
suppressMessages(library(knitr))
# Paso 1: Totalizar los datos para contar el número de viajes por comuna de origen
viajes_bicicleta_por_comuna_origen <- datos_seleccionados2 %>%
filter(`TIPO_DE_VEHÍCULO` == 1) %>%
group_by(comuna_origen) %>%
summarise(Numero_de_viajes = n())
# Paso 2: Unir los datos totalizados con las comunas
comunas_con_viajes_bicicleta <- left_join(comunas_sf, viajes_bicicleta_por_comuna_origen, by = c("comuna" = "comuna_origen"))
# Paso 3: Crear el mapa
head(comunas_con_viajes_bicicleta,22)
## Simple feature collection with 22 features and 5 fields
## Geometry type: POLYGON
## Dimension: XY
## Bounding box: xmin: 1053868 ymin: 860190.2 xmax: 1068492 ymax: 879441.5
## Geodetic CRS: WGS 84
## First 10 features:
## OBJECTID gid comuna nombre Numero_de_viajes
## 1 1 107 2 Comuna 2 159
## 2 2 108 1 Comuna 1 36
## 3 3 109 3 Comuna 3 99
## 4 4 110 19 Comuna 19 141
## 5 5 103 15 Comuna 15 70
## 6 6 104 17 Comuna 17 141
## 7 7 105 18 Comuna 18 111
## 8 8 106 22 Comuna 22 55
## 9 9 89 6 Comuna 6 44
## 10 10 90 4 Comuna 4 74
## geometry
## 1 POLYGON ((1059648 874236.3,...
## 2 POLYGON ((1054094 875172.8,...
## 3 POLYGON ((1061757 874615.5,...
## 4 POLYGON ((1057817 873269.4,...
## 5 POLYGON ((1065485 869864.1,...
## 6 POLYGON ((1061675 868320.9,...
## 7 POLYGON ((1059061 867223.6,...
## 8 POLYGON ((1059486 864976.4,...
## 9 POLYGON ((1065143 879409.5,...
## 10 POLYGON ((1063833 877507.1,...
ggplot(data = comunas_con_viajes_bicicleta) +
geom_sf(aes(fill = Numero_de_viajes), color = NA) +
geom_sf_text(aes(label = nombre), check_overlap = TRUE, size = 3) + # Añade nombres de comunas
scale_fill_viridis_c(name = "Número de Viajes", breaks = pretty_breaks(n = 5)) +
labs(title = "Número de viajes por comuna de origen en bicicleta") +
theme_minimal()
#Imprimir tabla
# Usar kable para imprimir una tabla formateada
kable(viajes_bicicleta_por_comuna_origen)
comuna_origen | Numero_de_viajes |
---|---|
0 | 43 |
1 | 36 |
2 | 159 |
3 | 99 |
4 | 74 |
5 | 38 |
6 | 44 |
7 | 35 |
8 | 52 |
9 | 53 |
10 | 82 |
11 | 52 |
12 | 14 |
13 | 76 |
14 | 37 |
15 | 70 |
16 | 73 |
17 | 141 |
18 | 111 |
19 | 141 |
20 | 46 |
21 | 44 |
22 | 55 |
99 | 156 |
Análisis de la Gráfica:
Las áreas de color oscuro representan una mayor cantidad de viajes en bicicleta, lo que indica comunas con una actividad ciclista más alta. Estas podrían ser áreas con mejor infraestructura ciclista, como carriles exclusivos para bicicletas, o podrían estar más cerca de destinos populares que son fácilmente accesibles en bicicleta.
Algunas comunas tienen un número significativamente menor de viajes en bicicleta, lo que puede resaltar la falta de infraestructura segura para ciclistas, mayores distancias a destinos clave, o posiblemente una menor densidad de población.
Requerimiento: Graficar mapa que indique la cantidad de viajes que salen de la comuna de origen relacinado con el transporte: Moto (Código 2)
suppressMessages(library(scales))
suppressMessages(library(knitr))
# Paso 1: Totalizar los datos para contar el número de viajes por comuna de origen
viajes_moto_por_comuna_origen <- datos_seleccionados2 %>%
filter(`TIPO_DE_VEHÍCULO` == 2) %>%
group_by(comuna_origen) %>%
summarise(Numero_de_viajes = n())
# Paso 2: Unir los datos totalizados con las comunas
comunas_con_viajes_moto <- left_join(comunas_sf, viajes_moto_por_comuna_origen, by = c("comuna" = "comuna_origen"))
# Paso 3: Crear el mapa
head(comunas_con_viajes_moto,22)
## Simple feature collection with 22 features and 5 fields
## Geometry type: POLYGON
## Dimension: XY
## Bounding box: xmin: 1053868 ymin: 860190.2 xmax: 1068492 ymax: 879441.5
## Geodetic CRS: WGS 84
## First 10 features:
## OBJECTID gid comuna nombre Numero_de_viajes
## 1 1 107 2 Comuna 2 1414
## 2 2 108 1 Comuna 1 375
## 3 3 109 3 Comuna 3 970
## 4 4 110 19 Comuna 19 1280
## 5 5 103 15 Comuna 15 536
## 6 6 104 17 Comuna 17 1136
## 7 7 105 18 Comuna 18 746
## 8 8 106 22 Comuna 22 515
## 9 9 89 6 Comuna 6 473
## 10 10 90 4 Comuna 4 720
## geometry
## 1 POLYGON ((1059648 874236.3,...
## 2 POLYGON ((1054094 875172.8,...
## 3 POLYGON ((1061757 874615.5,...
## 4 POLYGON ((1057817 873269.4,...
## 5 POLYGON ((1065485 869864.1,...
## 6 POLYGON ((1061675 868320.9,...
## 7 POLYGON ((1059061 867223.6,...
## 8 POLYGON ((1059486 864976.4,...
## 9 POLYGON ((1065143 879409.5,...
## 10 POLYGON ((1063833 877507.1,...
ggplot(data = comunas_con_viajes_moto) +
geom_sf(aes(fill = Numero_de_viajes), color = NA) +
geom_sf_text(aes(label = nombre), check_overlap = TRUE, size = 3) + # Añade nombres de comunas
scale_fill_viridis_c(name = "Número de Viajes", breaks = pretty_breaks(n = 5)) +
labs(title = "Número de viajes por comuna de origen en moto") +
theme_minimal()
#Imprimir tabla
# Usar kable para imprimir una tabla formateada
kable(viajes_moto_por_comuna_origen)
comuna_origen | Numero_de_viajes |
---|---|
0 | 259 |
1 | 375 |
2 | 1414 |
3 | 970 |
4 | 720 |
5 | 319 |
6 | 473 |
7 | 350 |
8 | 552 |
9 | 413 |
10 | 675 |
11 | 431 |
12 | 176 |
13 | 554 |
14 | 310 |
15 | 536 |
16 | 450 |
17 | 1136 |
18 | 746 |
19 | 1280 |
20 | 339 |
21 | 378 |
22 | 515 |
99 | 2706 |
Análisis de la Gráfica:
Las comunas con colores más oscuros representan una mayor cantidad de viajes en moto, sugiriendo áreas de alta densidad de tráfico de motocicletas. Esto podría ser indicativo de centros de actividad económica o de zonas con una población que prefiere la moto por su eficiencia y facilidad de movilidad en el tráfico.
Las comunas con colores más claros representan una menor cantidad de viajes en moto. Esto puede estar relacionado con una menor población, mayores distancias a destinos, o tal vez una mayor accesibilidad a otras formas de transporte.
Requerimiento: Graficar mapa que indique la cantidad de viajes que salen de la comuna de origen relacinado con el transporte: Automóvil (Código 3)
suppressMessages(library(scales))
suppressMessages(library(knitr))
# Paso 1: Totalizar los datos para contar el número de viajes por comuna de origen
viajes_automovil_por_comuna_origen <- datos_seleccionados2 %>%
filter(`TIPO_DE_VEHÍCULO` == 3) %>%
group_by(comuna_origen) %>%
summarise(Numero_de_viajes = n())
# Paso 2: Unir los datos totalizados con las comunas
comunas_con_viajes_automovil <- left_join(comunas_sf, viajes_automovil_por_comuna_origen, by = c("comuna" = "comuna_origen"))
# Paso 3: Crear el mapa
head(comunas_con_viajes_automovil,22)
## Simple feature collection with 22 features and 5 fields
## Geometry type: POLYGON
## Dimension: XY
## Bounding box: xmin: 1053868 ymin: 860190.2 xmax: 1068492 ymax: 879441.5
## Geodetic CRS: WGS 84
## First 10 features:
## OBJECTID gid comuna nombre Numero_de_viajes
## 1 1 107 2 Comuna 2 1121
## 2 2 108 1 Comuna 1 301
## 3 3 109 3 Comuna 3 854
## 4 4 110 19 Comuna 19 1165
## 5 5 103 15 Comuna 15 456
## 6 6 104 17 Comuna 17 899
## 7 7 105 18 Comuna 18 559
## 8 8 106 22 Comuna 22 489
## 9 9 89 6 Comuna 6 389
## 10 10 90 4 Comuna 4 551
## geometry
## 1 POLYGON ((1059648 874236.3,...
## 2 POLYGON ((1054094 875172.8,...
## 3 POLYGON ((1061757 874615.5,...
## 4 POLYGON ((1057817 873269.4,...
## 5 POLYGON ((1065485 869864.1,...
## 6 POLYGON ((1061675 868320.9,...
## 7 POLYGON ((1059061 867223.6,...
## 8 POLYGON ((1059486 864976.4,...
## 9 POLYGON ((1065143 879409.5,...
## 10 POLYGON ((1063833 877507.1,...
ggplot(data = comunas_con_viajes_automovil) +
geom_sf(aes(fill = Numero_de_viajes), color = NA) +
geom_sf_text(aes(label = nombre), check_overlap = TRUE, size = 3) + # Añade nombres de comunas
scale_fill_viridis_c(name = "Número de Viajes", breaks = pretty_breaks(n = 5)) +
labs(title = "Número de viajes por comuna de origen en automóvil") +
theme_minimal()
#Imprimir tabla
# Usar kable para imprimir una tabla formateada
kable(viajes_automovil_por_comuna_origen)
comuna_origen | Numero_de_viajes |
---|---|
0 | 317 |
1 | 301 |
2 | 1121 |
3 | 854 |
4 | 551 |
5 | 241 |
6 | 389 |
7 | 283 |
8 | 420 |
9 | 382 |
10 | 529 |
11 | 361 |
12 | 123 |
13 | 486 |
14 | 272 |
15 | 456 |
16 | 385 |
17 | 899 |
18 | 559 |
19 | 1165 |
20 | 272 |
21 | 328 |
22 | 489 |
99 | 2917 |
Análisis de la Gráfica:
Las comunas con tonos más oscuros de azul indican un mayor uso del automóvil. Esto puede reflejar la dependencia de las comunidades en los vehículos, posiblemente debido a factores como la distancia a centros de trabajo o comercio, la disponibilidad y conveniencia del transporte público, o la presencia de carreteras y facilidades de estacionamiento.
El mapa sugiere una distribución desigual del uso del automóvil entre las comunas. Algunas comunas como la Comuna 1 y la Comuna 19 destacan, lo que podría estar asociado con un mayor nivel socioeconómico, la presencia de áreas comerciales o industriales, o la ubicación de importantes nodos de transporte.
Requerimiento: Graficar mapa que indique la cantidad de viajes que llegan a la comuna de destino en general (Incluye los 3 medios de transporte)
suppressMessages(library(scales))
suppressMessages(library(knitr))
# Paso 1: Totalizar los datos para contar el número de viajes por comuna de destino
viajes_por_comuna_destino <- datos_seleccionados2 %>%
group_by(comuna_destino) %>%
summarise(Numero_de_viajes = n())
# Paso 2: Unir los datos totalizados con las comunas
comunas_con_viajes <- left_join(comunas_sf, viajes_por_comuna_destino, by = c("comuna" = "comuna_destino"))
# Paso 3: Crear el mapa
head(comunas_con_viajes,22)
## Simple feature collection with 22 features and 5 fields
## Geometry type: POLYGON
## Dimension: XY
## Bounding box: xmin: 1053868 ymin: 860190.2 xmax: 1068492 ymax: 879441.5
## Geodetic CRS: WGS 84
## First 10 features:
## OBJECTID gid comuna nombre Numero_de_viajes
## 1 1 107 2 Comuna 2 4810
## 2 2 108 1 Comuna 1 230
## 3 3 109 3 Comuna 3 3859
## 4 4 110 19 Comuna 19 3158
## 5 5 103 15 Comuna 15 579
## 6 6 104 17 Comuna 17 2164
## 7 7 105 18 Comuna 18 662
## 8 8 106 22 Comuna 22 1860
## 9 9 89 6 Comuna 6 716
## 10 10 90 4 Comuna 4 1856
## geometry
## 1 POLYGON ((1059648 874236.3,...
## 2 POLYGON ((1054094 875172.8,...
## 3 POLYGON ((1061757 874615.5,...
## 4 POLYGON ((1057817 873269.4,...
## 5 POLYGON ((1065485 869864.1,...
## 6 POLYGON ((1061675 868320.9,...
## 7 POLYGON ((1059061 867223.6,...
## 8 POLYGON ((1059486 864976.4,...
## 9 POLYGON ((1065143 879409.5,...
## 10 POLYGON ((1063833 877507.1,...
ggplot(data = comunas_con_viajes) +
geom_sf(aes(fill = Numero_de_viajes), color = NA) +
geom_sf_text(aes(label = nombre), check_overlap = TRUE, size = 3) + # Añade nombres de comunas
scale_fill_viridis_c(name = "Número de Viajes", breaks = pretty_breaks(n = 5)) +
labs(title = "Número de viajes por comuna de destino en general") +
theme_minimal()
#Imprimir tabla
# Usar kable para imprimir una tabla formateada
kable(viajes_por_comuna_destino)
comuna_destino | Numero_de_viajes |
---|---|
0 | 788 |
1 | 230 |
2 | 4810 |
3 | 3859 |
4 | 1856 |
5 | 522 |
6 | 716 |
7 | 748 |
8 | 1025 |
9 | 1279 |
10 | 927 |
11 | 564 |
12 | 246 |
13 | 673 |
14 | 379 |
15 | 579 |
16 | 743 |
17 | 2164 |
18 | 662 |
19 | 3158 |
20 | 351 |
21 | 515 |
22 | 1860 |
99 | 6400 |
Análisis de la Gráfica:
Las comunas con tonos más oscuros indican un mayor número de viajes hacia ellas, lo que podría significar que son áreas con alta concentración de empleo, servicios, o actividades comerciales que atraen a las personas de otras partes de la ciudad
Las comunas que sirven como grandes destinos pueden requerir una infraestructura de transporte más robusta para manejar el volumen de tráfico entrante.
Requerimiento: Graficar mapa que indique la cantidad de viajes que salen de la comuna de destino relacinado con el transporte: Bicicleta (Código 1)
suppressMessages(library(scales))
suppressMessages(library(knitr))
# Paso 1: Totalizar los datos para contar el número de viajes por comuna de destino
viajes_bicicleta_por_comuna_destino <- datos_seleccionados2 %>%
filter(`TIPO_DE_VEHÍCULO` == 1) %>%
group_by(comuna_destino) %>%
summarise(Numero_de_viajes = n())
# Paso 2: Unir los datos totalizados con las comunas
comunas_con_viajes_bicicleta <- left_join(comunas_sf, viajes_bicicleta_por_comuna_destino, by = c("comuna" = "comuna_destino"))
# Paso 3: Crear el mapa
head(comunas_con_viajes_bicicleta,22)
## Simple feature collection with 22 features and 5 fields
## Geometry type: POLYGON
## Dimension: XY
## Bounding box: xmin: 1053868 ymin: 860190.2 xmax: 1068492 ymax: 879441.5
## Geodetic CRS: WGS 84
## First 10 features:
## OBJECTID gid comuna nombre Numero_de_viajes
## 1 1 107 2 Comuna 2 218
## 2 2 108 1 Comuna 1 12
## 3 3 109 3 Comuna 3 189
## 4 4 110 19 Comuna 19 147
## 5 5 103 15 Comuna 15 20
## 6 6 104 17 Comuna 17 115
## 7 7 105 18 Comuna 18 31
## 8 8 106 22 Comuna 22 100
## 9 9 89 6 Comuna 6 34
## 10 10 90 4 Comuna 4 85
## geometry
## 1 POLYGON ((1059648 874236.3,...
## 2 POLYGON ((1054094 875172.8,...
## 3 POLYGON ((1061757 874615.5,...
## 4 POLYGON ((1057817 873269.4,...
## 5 POLYGON ((1065485 869864.1,...
## 6 POLYGON ((1061675 868320.9,...
## 7 POLYGON ((1059061 867223.6,...
## 8 POLYGON ((1059486 864976.4,...
## 9 POLYGON ((1065143 879409.5,...
## 10 POLYGON ((1063833 877507.1,...
ggplot(data = comunas_con_viajes_bicicleta) +
geom_sf(aes(fill = Numero_de_viajes), color = NA) +
geom_sf_text(aes(label = nombre), check_overlap = TRUE, size = 3) + # Añade nombres de comunas
scale_fill_viridis_c(name = "Número de Viajes", breaks = pretty_breaks(n = 5)) +
labs(title = "Número de viajes por comuna de destino en bicicleta") +
theme_minimal()
#Imprimir tabla
# Usar kable para imprimir una tabla formateada
kable(viajes_bicicleta_por_comuna_destino)
comuna_destino | Numero_de_viajes |
---|---|
0 | 46 |
1 | 12 |
2 | 218 |
3 | 189 |
4 | 85 |
5 | 41 |
6 | 34 |
7 | 41 |
8 | 54 |
9 | 65 |
10 | 43 |
11 | 29 |
12 | 15 |
13 | 33 |
14 | 22 |
15 | 20 |
16 | 35 |
17 | 115 |
18 | 31 |
19 | 147 |
20 | 25 |
21 | 26 |
22 | 100 |
99 | 305 |
Análisis de la Gráfica:
Las comunas con colores más oscuros indican un número mayor de llegadas en bicicleta, lo cual podría sugerir que son destinos populares para los ciclistas, tal vez debido a la presencia de instalaciones como áreas comerciales, zonas de ocio, o parques.
Las áreas con menor número de llegadas podrían carecer de infraestructura adecuada para bicicletas o podrían estar más alejadas de los centros de actividad, desincentivando su uso por largas distancias.
Requerimiento: Graficar mapa que indique la cantidad de viajes que salen de la comuna de destino relacinado con el transporte: Moto (Código 2)
suppressMessages(library(scales))
suppressMessages(library(knitr))
# Paso 1: Totalizar los datos para contar el número de viajes por comuna de destino
viajes_moto_por_comuna_destino <- datos_seleccionados2 %>%
filter(`TIPO_DE_VEHÍCULO` == 2) %>%
group_by(comuna_destino) %>%
summarise(Numero_de_viajes = n())
# Paso 2: Unir los datos totalizados con las comunas
comunas_con_viajes_moto <- left_join(comunas_sf, viajes_moto_por_comuna_destino, by = c("comuna" = "comuna_destino"))
# Paso 3: Crear el mapa
head(comunas_con_viajes_moto,22)
## Simple feature collection with 22 features and 5 fields
## Geometry type: POLYGON
## Dimension: XY
## Bounding box: xmin: 1053868 ymin: 860190.2 xmax: 1068492 ymax: 879441.5
## Geodetic CRS: WGS 84
## First 10 features:
## OBJECTID gid comuna nombre Numero_de_viajes
## 1 1 107 2 Comuna 2 2177
## 2 2 108 1 Comuna 1 112
## 3 3 109 3 Comuna 3 1734
## 4 4 110 19 Comuna 19 1421
## 5 5 103 15 Comuna 15 271
## 6 6 104 17 Comuna 17 927
## 7 7 105 18 Comuna 18 302
## 8 8 106 22 Comuna 22 911
## 9 9 89 6 Comuna 6 323
## 10 10 90 4 Comuna 4 846
## geometry
## 1 POLYGON ((1059648 874236.3,...
## 2 POLYGON ((1054094 875172.8,...
## 3 POLYGON ((1061757 874615.5,...
## 4 POLYGON ((1057817 873269.4,...
## 5 POLYGON ((1065485 869864.1,...
## 6 POLYGON ((1061675 868320.9,...
## 7 POLYGON ((1059061 867223.6,...
## 8 POLYGON ((1059486 864976.4,...
## 9 POLYGON ((1065143 879409.5,...
## 10 POLYGON ((1063833 877507.1,...
ggplot(data = comunas_con_viajes_moto) +
geom_sf(aes(fill = Numero_de_viajes), color = NA) +
geom_sf_text(aes(label = nombre), check_overlap = TRUE, size = 3) + # Añade nombres de comunas
scale_fill_viridis_c(name = "Número de Viajes", breaks = pretty_breaks(n = 5)) +
labs(title = "Número de viajes por comuna de destino en moto") +
theme_minimal()
#Imprimir tabla
# Usar kable para imprimir una tabla formateada
kable(viajes_moto_por_comuna_destino)
comuna_destino | Numero_de_viajes |
---|---|
0 | 390 |
1 | 112 |
2 | 2177 |
3 | 1734 |
4 | 846 |
5 | 215 |
6 | 323 |
7 | 353 |
8 | 470 |
9 | 608 |
10 | 419 |
11 | 254 |
12 | 128 |
13 | 346 |
14 | 188 |
15 | 271 |
16 | 327 |
17 | 927 |
18 | 302 |
19 | 1421 |
20 | 151 |
21 | 243 |
22 | 911 |
99 | 2961 |
Análisis de la Gráfica:
Las comunas con colores más oscuros, que indican un mayor número de viajes de motos hacia ellas, sugieren ser áreas que atraen un flujo significativo de tráfico. Puede que estas áreas tengan centros comerciales, zonas industriales, o sean puntos clave de comercio.
La popularidad del transporte en moto puede deberse a varias razones, incluyendo la eficiencia en el tráfico congestionado, el menor costo operativo en comparación con los automóviles, y la flexibilidad para el estacionamiento.
Requerimiento: Graficar mapa que indique la cantidad de viajes que salen de la comuna de destino relacinado con el transporte: Automóvil (Código 3)
suppressMessages(library(scales))
suppressMessages(library(knitr))
# Paso 1: Totalizar los datos para contar el número de viajes por comuna de destino
viajes_automovil_por_comuna_destino <- datos_seleccionados2 %>%
filter(`TIPO_DE_VEHÍCULO` == 3) %>%
group_by(comuna_destino) %>%
summarise(Numero_de_viajes = n())
# Paso 2: Unir los datos totalizados con las comunas
comunas_con_viajes_automovil <- left_join(comunas_sf, viajes_automovil_por_comuna_destino, by = c("comuna" = "comuna_destino"))
# Paso 3: Crear el mapa
head(comunas_con_viajes_automovil,22)
## Simple feature collection with 22 features and 5 fields
## Geometry type: POLYGON
## Dimension: XY
## Bounding box: xmin: 1053868 ymin: 860190.2 xmax: 1068492 ymax: 879441.5
## Geodetic CRS: WGS 84
## First 10 features:
## OBJECTID gid comuna nombre Numero_de_viajes
## 1 1 107 2 Comuna 2 2006
## 2 2 108 1 Comuna 1 86
## 3 3 109 3 Comuna 3 1557
## 4 4 110 19 Comuna 19 1302
## 5 5 103 15 Comuna 15 245
## 6 6 104 17 Comuna 17 959
## 7 7 105 18 Comuna 18 276
## 8 8 106 22 Comuna 22 694
## 9 9 89 6 Comuna 6 275
## 10 10 90 4 Comuna 4 757
## geometry
## 1 POLYGON ((1059648 874236.3,...
## 2 POLYGON ((1054094 875172.8,...
## 3 POLYGON ((1061757 874615.5,...
## 4 POLYGON ((1057817 873269.4,...
## 5 POLYGON ((1065485 869864.1,...
## 6 POLYGON ((1061675 868320.9,...
## 7 POLYGON ((1059061 867223.6,...
## 8 POLYGON ((1059486 864976.4,...
## 9 POLYGON ((1065143 879409.5,...
## 10 POLYGON ((1063833 877507.1,...
ggplot(data = comunas_con_viajes_automovil) +
geom_sf(aes(fill = Numero_de_viajes), color = NA) +
geom_sf_text(aes(label = nombre), check_overlap = TRUE, size = 3) + # Añade nombres de comunas
scale_fill_viridis_c(name = "Número de Viajes", breaks = pretty_breaks(n = 5)) +
labs(title = "Número de viajes por comuna de origen en automóvil") +
theme_minimal()
#Imprimir tabla
# Usar kable para imprimir una tabla formateada
kable(viajes_automovil_por_comuna_destino)
comuna_destino | Numero_de_viajes |
---|---|
0 | 280 |
1 | 86 |
2 | 2006 |
3 | 1557 |
4 | 757 |
5 | 225 |
6 | 275 |
7 | 286 |
8 | 403 |
9 | 489 |
10 | 384 |
11 | 239 |
12 | 85 |
13 | 226 |
14 | 138 |
15 | 245 |
16 | 321 |
17 | 959 |
18 | 276 |
19 | 1302 |
20 | 144 |
21 | 198 |
22 | 694 |
99 | 2525 |
Análisis de la Gráfica:
Las comunas con tonalidades más oscuras indican una alta cantidad de viajes originados, lo cual puede sugerir un acceso significativo a vehículos y una posible preferencia por el automóvil como modo de transporte primario.
La variabilidad en la intensidad del color a través de las comunas muestra una distribución desigual del tráfico originado. Las áreas más claras podrían representar zonas menos pobladas o con mejor acceso a alternativas de transporte público.
Adicionalmente, se establecen las siguientes conclusiones asociadas a la planficación urbana y el transporte:
Infraestructura: La información puede ser utilizada para priorizar mejoras en la infraestructura de transporte en las comunas con mayor número de viajes.
Planificación de servicios de Transporte: Las autoridades de transporte podrían utilizar estos datos para optimizar las rutas de transporte público, aumentar la frecuencia de los servicios o realizar ajustes tarifarios.
Medidas de Sostenibilidad: Las comunas con menor número de viajes pueden ser objetivos potenciales para campañas de promoción del uso de la bicicleta, siempre y cuando se mejore la infraestructura para el ciclista.
Desarrollo Económico: El análisis de la movilidad puede proporcionar información valiosa sobre el desarrollo económico y la planificación de la expansión urbana.
Infraestructura Ciclista: Las comunas con un número bajo de viajes en bicicleta pueden beneficiarse de inversiones en infraestructura ciclista para fomentar este modo de transporte más sostenible y saludable.
Promoción del Ciclismo: Las comunas con mayor número de viajes pueden ser puntos de referencia para promocionar las mejores prácticas y expandir la cultura del ciclismo en otras partes de la ciudad.
Conectividad y Accesibilidad: Los datos pueden indicar la necesidad de mejorar la conectividad entre comunas para los ciclistas, facilitando así viajes más largos y seguros en bicicleta.
Accesibilidad y Eficiencia: La moto es a menudo preferida en entornos urbanos debido a su capacidad para maniobrar en el tráfico y por el menor espacio de estacionamiento que requiere. Las áreas con alta densidad de viajes en moto podrían indicar problemas con la congestión de tráfico o la eficiencia del transporte público
Seguridad Vial: Las motos presentan desafíos de seguridad. La identificación de comunas con alto tráfico de motos podría conducir a iniciativas de seguridad dirigidas, como campañas de concienciación y mejoras en la señalización.
Política de Transporte: Estos datos pueden apoyar la formulación de políticas para gestionar el flujo de motocicletas, como la creación de carriles exclusivos o la regulación del estacionamiento.
Sostenibilidad y Medio Ambiente: Un alto número de viajes de automóviles está asociado con mayores emisiones de gases de efecto invernadero y contaminación. Este dato es crucial para las estrategias de movilidad urbana sostenible.