library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v ggplot2 3.3.3 v purrr 0.3.4
## v tibble 3.1.0 v dplyr 1.0.5
## v tidyr 1.1.3 v stringr 1.4.0
## v readr 1.4.0 v forcats 0.5.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(lubridate)
##
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
##
## date, intersect, setdiff, union
library(sf)
## Linking to GEOS 3.9.0, GDAL 3.2.1, PROJ 7.2.1
library(ggmap)
## Google's Terms of Service: https://cloud.google.com/maps-platform/terms/.
## Please cite ggmap if you use it! See citation("ggmap") for details.
recorridos_2020 <- read.csv("recorridos-realizados-2020.csv", stringsAsFactors = TRUE)
summary(recorridos_2020)
## duracion_recorrido id_estacion_origen fecha_origen_recorrido
## Min. : 0 Min. : 2.0 2020-08-05 18:16:24: 6
## 1st Qu.: 709 1st Qu.: 76.0 2020-09-11 16:39:12: 6
## Median : 1142 Median :164.0 2020-10-01 18:54:59: 6
## Mean : 1463 Mean :169.2 2020-11-18 18:15:43: 6
## 3rd Qu.: 1664 3rd Qu.:239.0 2020-07-30 18:42:14: 5
## Max. :3190094 Max. :449.0 2020-08-01 13:41:21: 5
## (Other) :2002911
## nombre_estacion_origen fecha_destino_recorrido
## 160 - Godoy Cruz y Libertador: 30295 2020-10-13 17:31:24: 12
## 014 - Pacifico : 29080 2020-12-07 19:07:54: 12
## 292 - PLAZA BOLIVIA : 28774 2020-09-17 17:26:06: 9
## 029 - Parque Centenario : 28637 2020-09-13 14:50:20: 6
## 255 - BARRANCAS DE BELGRANO : 25619 2020-09-13 17:34:51: 6
## 335 - General Urquiza : 22473 2020-11-12 19:40:08: 6
## (Other) :1838067 (Other) :2002894
## id_estacion_destino nombre_estacion_destino id_usuario
## Min. : 2.0 160 - Godoy Cruz y Libertador: 30386 Min. : 37
## 1st Qu.: 76.0 292 - PLAZA BOLIVIA : 29526 1st Qu.:164597
## Median :165.0 029 - Parque Centenario : 27642 Median :458410
## Mean :170.2 014 - Pacifico : 27442 Mean :417679
## 3rd Qu.:239.0 255 - BARRANCAS DE BELGRANO : 25623 3rd Qu.:673113
## Max. :449.0 335 - General Urquiza : 22652 Max. :735946
## (Other) :1839674
## direccion_estacion_origen
## Godoy Cruz 3279 y Libertador : 30295
## Santa Fe Av. & Bullrich, Int. Av. : 29080
## Olleros Av. & Del Libertador Av. : 28774
## Av. Patricias Argentinas & Estivao : 28637
## Sucre, Antonio Jose De, Mcal. Y Vertiz Virrey Av.: 25619
## Figueroa Alcorta & Sarmiento : 22473
## (Other) :1838067
## long_estacion_origen lat_estacion_origen
## Min. :-58.49 Min. :-34.65
## 1st Qu.:-58.44 1st Qu.:-34.61
## Median :-58.42 Median :-34.60
## Mean :-58.42 Mean :-34.60
## 3rd Qu.:-58.40 3rd Qu.:-34.58
## Max. :-58.36 Max. :-34.54
##
## direccion_estacion_destino
## Godoy Cruz 3279 y Libertador : 30386
## Olleros Av. & Del Libertador Av. : 29526
## Av. Patricias Argentinas & Estivao : 27642
## Santa Fe Av. & Bullrich, Int. Av. : 27442
## Sucre, Antonio Jose De, Mcal. Y Vertiz Virrey Av.: 25623
## Figueroa Alcorta & Sarmiento : 22652
## (Other) :1839674
## long_estacion_destino lat_estacion_destino periodo
## Min. :-58.49 Min. :-34.65 Min. :2020
## 1st Qu.:-58.44 1st Qu.:-34.61 1st Qu.:2020
## Median :-58.42 Median :-34.60 Median :2020
## Mean :-58.42 Mean :-34.60 Mean :2020
## 3rd Qu.:-58.39 3rd Qu.:-34.58 3rd Qu.:2020
## Max. :-58.36 Max. :-34.54 Max. :2020
##
recorridos_2020 <- mutate(recorridos_2020,
dia=substr(fecha_origen_recorrido, 1, 10),
hora=substr(fecha_origen_recorrido, 11, 16))
head(recorridos_2020)
## duracion_recorrido id_estacion_origen fecha_origen_recorrido
## 1 882 116 2020-12-31 23:54:22
## 2 894 116 2020-12-29 12:39:18
## 3 1361 116 2020-12-21 21:21:38
## 4 1010 116 2020-12-20 21:58:19
## 5 1490 116 2020-12-20 13:32:53
## 6 976 116 2020-12-19 17:24:42
## nombre_estacion_origen fecha_destino_recorrido id_estacion_destino
## 1 116 - HOSPITAL ALEMÃ\201N 2021-01-01 00:09:04 214
## 2 116 - HOSPITAL ALEMÃ\201N 2020-12-29 12:54:12 214
## 3 116 - HOSPITAL ALEMÃ\201N 2020-12-21 21:44:19 214
## 4 116 - HOSPITAL ALEMÃ\201N 2020-12-20 22:15:09 214
## 5 116 - HOSPITAL ALEMÃ\201N 2020-12-20 13:57:43 214
## 6 116 - HOSPITAL ALEMÃ\201N 2020-12-19 17:40:58 214
## nombre_estacion_destino id_usuario direccion_estacion_origen
## 1 142 - Armenia y Gorriti 666202 Beruti & Ecuador
## 2 142 - Armenia y Gorriti 332689 Beruti & Ecuador
## 3 142 - Armenia y Gorriti 57949 Beruti & Ecuador
## 4 142 - Armenia y Gorriti 454846 Beruti & Ecuador
## 5 142 - Armenia y Gorriti 690975 Beruti & Ecuador
## 6 142 - Armenia y Gorriti 698489 Beruti & Ecuador
## long_estacion_origen lat_estacion_origen direccion_estacion_destino
## 1 -58.40259 -34.59217 Armenia 1525 y Gorriti
## 2 -58.40259 -34.59217 Armenia 1525 y Gorriti
## 3 -58.40259 -34.59217 Armenia 1525 y Gorriti
## 4 -58.40259 -34.59217 Armenia 1525 y Gorriti
## 5 -58.40259 -34.59217 Armenia 1525 y Gorriti
## 6 -58.40259 -34.59217 Armenia 1525 y Gorriti
## long_estacion_destino lat_estacion_destino periodo dia hora
## 1 -58.42897 -34.59054 2020 2020-12-31 23:54
## 2 -58.42897 -34.59054 2020 2020-12-29 12:39
## 3 -58.42897 -34.59054 2020 2020-12-21 21:21
## 4 -58.42897 -34.59054 2020 2020-12-20 21:58
## 5 -58.42897 -34.59054 2020 2020-12-20 13:32
## 6 -58.42897 -34.59054 2020 2020-12-19 17:24
recorridos_2020 <- mutate(recorridos_2020, fecha=ymd(dia))
recorridos_2020 <- mutate(recorridos_2020, hora2=hour(hm(hora)))
str(recorridos_2020)
## 'data.frame': 2002945 obs. of 19 variables:
## $ duracion_recorrido : int 882 894 1361 1010 1490 976 1519 793 981 1431 ...
## $ id_estacion_origen : int 116 116 116 116 116 116 116 116 116 116 ...
## $ fecha_origen_recorrido : Factor w/ 1859821 levels "2020-01-01 00:02:50",..: 1859821 1839612 1779461 1769564 1764789 1759040 1738134 1722272 1708916 1708809 ...
## $ nombre_estacion_origen : Factor w/ 201 levels "001 - FACULTAD DE DERECHO",..: 83 83 83 83 83 83 83 83 83 83 ...
## $ fecha_destino_recorrido : Factor w/ 1844425 levels "2020-01-01 00:06:54",..: 1844419 1824267 1764774 1754921 1750223 1744498 1723921 1708122 1694822 1694839 ...
## $ id_estacion_destino : num 214 214 214 214 214 214 214 214 214 214 ...
## $ nombre_estacion_destino : Factor w/ 201 levels "001 - FACULTAD DE DERECHO",..: 102 102 102 102 102 102 102 102 102 102 ...
## $ id_usuario : int 666202 332689 57949 454846 690975 698489 69834 28640 107392 113062 ...
## $ direccion_estacion_origen : Factor w/ 200 levels "1019 Riglos",..: 107 107 107 107 107 107 107 107 107 107 ...
## $ long_estacion_origen : num -58.4 -58.4 -58.4 -58.4 -58.4 ...
## $ lat_estacion_origen : num -34.6 -34.6 -34.6 -34.6 -34.6 ...
## $ direccion_estacion_destino: Factor w/ 200 levels "1019 Riglos",..: 84 84 84 84 84 84 84 84 84 84 ...
## $ long_estacion_destino : num -58.4 -58.4 -58.4 -58.4 -58.4 ...
## $ lat_estacion_destino : num -34.6 -34.6 -34.6 -34.6 -34.6 ...
## $ periodo : int 2020 2020 2020 2020 2020 2020 2020 2020 2020 2020 ...
## $ dia : chr "2020-12-31" "2020-12-29" "2020-12-21" "2020-12-20" ...
## $ hora : chr " 23:54" " 12:39" " 21:21" " 21:58" ...
## $ fecha : Date, format: "2020-12-31" "2020-12-29" ...
## $ hora2 : num 23 12 21 21 13 17 15 22 18 18 ...
recorridos_2020 <- mutate(recorridos_2020, mes=month(fecha, label=TRUE, abbr = FALSE))
head(recorridos_2020)
## duracion_recorrido id_estacion_origen fecha_origen_recorrido
## 1 882 116 2020-12-31 23:54:22
## 2 894 116 2020-12-29 12:39:18
## 3 1361 116 2020-12-21 21:21:38
## 4 1010 116 2020-12-20 21:58:19
## 5 1490 116 2020-12-20 13:32:53
## 6 976 116 2020-12-19 17:24:42
## nombre_estacion_origen fecha_destino_recorrido id_estacion_destino
## 1 116 - HOSPITAL ALEMÃ\201N 2021-01-01 00:09:04 214
## 2 116 - HOSPITAL ALEMÃ\201N 2020-12-29 12:54:12 214
## 3 116 - HOSPITAL ALEMÃ\201N 2020-12-21 21:44:19 214
## 4 116 - HOSPITAL ALEMÃ\201N 2020-12-20 22:15:09 214
## 5 116 - HOSPITAL ALEMÃ\201N 2020-12-20 13:57:43 214
## 6 116 - HOSPITAL ALEMÃ\201N 2020-12-19 17:40:58 214
## nombre_estacion_destino id_usuario direccion_estacion_origen
## 1 142 - Armenia y Gorriti 666202 Beruti & Ecuador
## 2 142 - Armenia y Gorriti 332689 Beruti & Ecuador
## 3 142 - Armenia y Gorriti 57949 Beruti & Ecuador
## 4 142 - Armenia y Gorriti 454846 Beruti & Ecuador
## 5 142 - Armenia y Gorriti 690975 Beruti & Ecuador
## 6 142 - Armenia y Gorriti 698489 Beruti & Ecuador
## long_estacion_origen lat_estacion_origen direccion_estacion_destino
## 1 -58.40259 -34.59217 Armenia 1525 y Gorriti
## 2 -58.40259 -34.59217 Armenia 1525 y Gorriti
## 3 -58.40259 -34.59217 Armenia 1525 y Gorriti
## 4 -58.40259 -34.59217 Armenia 1525 y Gorriti
## 5 -58.40259 -34.59217 Armenia 1525 y Gorriti
## 6 -58.40259 -34.59217 Armenia 1525 y Gorriti
## long_estacion_destino lat_estacion_destino periodo dia hora
## 1 -58.42897 -34.59054 2020 2020-12-31 23:54
## 2 -58.42897 -34.59054 2020 2020-12-29 12:39
## 3 -58.42897 -34.59054 2020 2020-12-21 21:21
## 4 -58.42897 -34.59054 2020 2020-12-20 21:58
## 5 -58.42897 -34.59054 2020 2020-12-20 13:32
## 6 -58.42897 -34.59054 2020 2020-12-19 17:24
## fecha hora2 mes
## 1 2020-12-31 23 diciembre
## 2 2020-12-29 12 diciembre
## 3 2020-12-21 21 diciembre
## 4 2020-12-20 21 diciembre
## 5 2020-12-20 13 diciembre
## 6 2020-12-19 17 diciembre
recorridos_mes <- recorridos_2020 %>%
group_by(mes) %>%
summarise(cantidad=n())
options(scipen = 999)
ggplot(recorridos_2020)+
geom_bar(aes(x=mes, fill=mes))+
labs(title = "Cantidad de recorridos en Bicicletas por mes",
subtitle = "Año 2020",
x = "Mes",
y = "Cantidad")
En el cuadro se puede apreciar la cuarentena más estricta que tuvo CABA entre marzo y julio que se tradujo en los meses con la menor cantidad de recorridos, siendo mayo el mes con menos recorridos de todo el año.
Los meses de octubre, noviembre y diciembre duplican cada uno en cantidad de viajes a enero y casi triplican a febrero, meses en los que tampoco existía la cuarentena. Esto podría deberse a que luego de la cuarentena más estricta y con el tema del covid todavía vigente la gente prefiere transportarse en bicicletas para evitar el uso de transporte público cerrado.
recorridos_2020 <- mutate(recorridos_2020, nombre_dia=wday(fecha, label=TRUE, locale="Spanish", abbr = FALSE))
head(recorridos_2020)
## duracion_recorrido id_estacion_origen fecha_origen_recorrido
## 1 882 116 2020-12-31 23:54:22
## 2 894 116 2020-12-29 12:39:18
## 3 1361 116 2020-12-21 21:21:38
## 4 1010 116 2020-12-20 21:58:19
## 5 1490 116 2020-12-20 13:32:53
## 6 976 116 2020-12-19 17:24:42
## nombre_estacion_origen fecha_destino_recorrido id_estacion_destino
## 1 116 - HOSPITAL ALEMÃ\201N 2021-01-01 00:09:04 214
## 2 116 - HOSPITAL ALEMÃ\201N 2020-12-29 12:54:12 214
## 3 116 - HOSPITAL ALEMÃ\201N 2020-12-21 21:44:19 214
## 4 116 - HOSPITAL ALEMÃ\201N 2020-12-20 22:15:09 214
## 5 116 - HOSPITAL ALEMÃ\201N 2020-12-20 13:57:43 214
## 6 116 - HOSPITAL ALEMÃ\201N 2020-12-19 17:40:58 214
## nombre_estacion_destino id_usuario direccion_estacion_origen
## 1 142 - Armenia y Gorriti 666202 Beruti & Ecuador
## 2 142 - Armenia y Gorriti 332689 Beruti & Ecuador
## 3 142 - Armenia y Gorriti 57949 Beruti & Ecuador
## 4 142 - Armenia y Gorriti 454846 Beruti & Ecuador
## 5 142 - Armenia y Gorriti 690975 Beruti & Ecuador
## 6 142 - Armenia y Gorriti 698489 Beruti & Ecuador
## long_estacion_origen lat_estacion_origen direccion_estacion_destino
## 1 -58.40259 -34.59217 Armenia 1525 y Gorriti
## 2 -58.40259 -34.59217 Armenia 1525 y Gorriti
## 3 -58.40259 -34.59217 Armenia 1525 y Gorriti
## 4 -58.40259 -34.59217 Armenia 1525 y Gorriti
## 5 -58.40259 -34.59217 Armenia 1525 y Gorriti
## 6 -58.40259 -34.59217 Armenia 1525 y Gorriti
## long_estacion_destino lat_estacion_destino periodo dia hora
## 1 -58.42897 -34.59054 2020 2020-12-31 23:54
## 2 -58.42897 -34.59054 2020 2020-12-29 12:39
## 3 -58.42897 -34.59054 2020 2020-12-21 21:21
## 4 -58.42897 -34.59054 2020 2020-12-20 21:58
## 5 -58.42897 -34.59054 2020 2020-12-20 13:32
## 6 -58.42897 -34.59054 2020 2020-12-19 17:24
## fecha hora2 mes nombre_dia
## 1 2020-12-31 23 diciembre jueves
## 2 2020-12-29 12 diciembre martes
## 3 2020-12-21 21 diciembre lunes
## 4 2020-12-20 21 diciembre domingo
## 5 2020-12-20 13 diciembre domingo
## 6 2020-12-19 17 diciembre sábado
ggplot(recorridos_2020)+
geom_bar(aes(x=nombre_dia, fill=nombre_dia))+
labs(title = "Cantidad de recorridos en Bicicletas, por día de semana",
subtitle = "Año 2020",
x = "Día",
y = "Cantidad")
Del análisis gráfico se desprende que los días jueves y viernes son los días donde más se utiliza el sistema de bicicletas. Los domingos son los días donde menos recorridos se realizan. De todas formas, de lunes a viernes no hay mucha diferencia entre cada día.
ggplot(recorridos_2020)+
geom_bar(aes(x=hora2, fill=hora2))+
labs(title = "Cantidad de recorridos en Bicicletas, por hora",
subtitle = "Año 2020",
x = "Hora",
y = "Cantidad")
Hay un aumento sostenido en la cantidad de recorridos a partir de las 5 de la mañana y durante todo el día hasta el pico en el uso del sistema de bicicletas que se da a las 18 hs, horario que coincide con la finalización de la jornada laboral promedio en CABA.
bbox <- make_bbox(recorridos_2020$long_estacion_origen, recorridos_2020$lat_estacion_origen)
mapa_base <- get_stamenmap(bbox = bbox,
maptype = "toner-lite",
zoom = 12)
## Source : http://tile.stamen.com/toner-lite/12/1382/2467.png
## Source : http://tile.stamen.com/toner-lite/12/1383/2467.png
## Source : http://tile.stamen.com/toner-lite/12/1384/2467.png
## Source : http://tile.stamen.com/toner-lite/12/1382/2468.png
## Source : http://tile.stamen.com/toner-lite/12/1383/2468.png
## Source : http://tile.stamen.com/toner-lite/12/1384/2468.png
ggmap(mapa_base)
ggmap(mapa_base)+
geom_point(data=recorridos_2020, aes(x=long_estacion_origen, y=lat_estacion_origen))
ggmap(mapa_base) +
geom_bin2d(data = recorridos_2020,
aes(x=long_estacion_origen, y=lat_estacion_origen), bins=20)+
scale_fill_viridis_c(option = "magma", direction=-1)
Del mapa de densidad se desprende que las estaciones más utilizadas como de origen del recorrido están distribuidas por el centro-norte de la ciudad.
ggmap(mapa_base) +
geom_bin2d(data = recorridos_2020,
aes(x=long_estacion_origen, y=lat_estacion_origen), bins=20)+
scale_fill_viridis_c(option = "magma", direction=-1)+
facet_wrap(~hora2)
Del facetado por horas, se puede apreciar como cambia la densidad de las estaciones de origen más utilizadas. Durante la mañana y las primeras horas de la tarde y noche las estaciones más utilizadas parecieran estar más repartidas por los barrios. Alrededor de las 18 hs, pico de utilización del sistema público de bicicletas, las estaciones más utilizadas se concentran geográficamente más cerca del macro centro porteño donde hay mayor cantidad de oficinas, aunque no tanto en microcentro.
ggmap(mapa_base) +
geom_bin2d(data = recorridos_2020,
aes(x=long_estacion_origen, y=lat_estacion_origen), bins=20)+
scale_fill_viridis_c(option = "magma", direction=-1)+
facet_wrap(~mes)
Según los meses del año, no se aprecian cambios significativos entre mes y mes.
ggmap(mapa_base) +
geom_bin2d(data = recorridos_2020,
aes(x=long_estacion_origen, y=lat_estacion_origen), bins=20)+
scale_fill_viridis_c(option = "magma", direction=-1)+
facet_wrap(~nombre_dia)
En cuanto al facetado por días, se aprecian cambios significativos los fines de semana con respecto a los días de lunes a viernes. En los primeros, las estaciones más utilizadas están más alejadas del microcentro de la Ciudad, más cercana a la zonas con parques y áreas verdes de la misma.