• 1. Presentación del informe
  • 2. Mapa 1
  • 3. Mapa 2
  • 4. Mapa 3
  • 5. Mapa 4
  • 6. Mapa 5
  • 7. Mapa 6
  • 8. Mapa 7
  • 9. Mapa 8

1. Presentación del informe

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

  • Carga de archivo

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/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`
  • Procesamiento de información

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)

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:

  • Carga de Shapes

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/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:

2. Mapa 1

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

3. Mapa 2

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

4. Mapa 3

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

5. Mapa 4

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

6. Mapa 5

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

7. Mapa 6

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

8. Mapa 7

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

9. Mapa 8

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