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