Cargamos librerias a utilizar
library(tidyverse)
library(sf)
library(ggmap)
library(lubridate)
Haremos un análisis del uso de bicicletas de aquiler en Londres Usaremos un dataset obtenido del portal de datos de la ciudad de Londres https://data.london.gov.uk/
london_bikes <- read.csv("TFL Cycle Hire 2017.csv",stringsAsFactors=TRUE)
dim(london_bikes)
## [1] 10011238 16
head(london_bikes)
## StartStation.Lat StartStation.Lon StartStaton.Docks EndStation.Lat
## 1 51.49016 -0.190393 29 51.49095
## 2 51.49016 -0.190393 29 51.49095
## 3 51.49016 -0.190393 29 51.49095
## 4 51.49016 -0.190393 29 51.49095
## 5 51.49016 -0.190393 29 51.49095
## 6 51.49016 -0.190393 29 51.49095
## EndStation.Lon EndStationDocks Rental.Id Duration Bike.Id StartDate
## 1 -0.18119 30 63751445 180 3428 2017-04-05 22:47:00
## 2 -0.18119 30 64016293 180 13909 2017-04-12 21:41:00
## 3 -0.18119 30 64334332 180 11693 2017-04-23 19:20:00
## 4 -0.18119 30 64567541 240 4552 2017-05-01 20:12:00
## 5 -0.18119 30 64787260 180 5270 2017-05-08 19:44:00
## 6 -0.18119 30 65022982 180 2123 2017-05-15 22:12:00
## StartStation.Id StartStation.Name EndDate
## 1 219 Bramham Gardens, Earl's Court 2017-04-05 22:50:00
## 2 219 Bramham Gardens, Earl's Court 2017-04-12 21:44:00
## 3 219 Bramham Gardens, Earl's Court 2017-04-23 19:23:00
## 4 219 Bramham Gardens, Earl's Court 2017-05-01 20:16:00
## 5 219 Bramham Gardens, Earl's Court 2017-05-08 19:47:00
## 6 219 Bramham Gardens, Earl's Court 2017-05-15 22:15:00
## EndStation.Id EndStation.Name Year
## 1 216 Old Brompton Road, South Kensington 2017
## 2 216 Old Brompton Road, South Kensington 2017
## 3 216 Old Brompton Road, South Kensington 2017
## 4 216 Old Brompton Road, South Kensington 2017
## 5 216 Old Brompton Road, South Kensington 2017
## 6 216 Old Brompton Road, South Kensington 2017
summary(london_bikes)
## StartStation.Lat StartStation.Lon StartStaton.Docks EndStation.Lat
## Min. :51.45 Min. :-0.236769 Min. :10.00 Min. :51.45
## 1st Qu.:51.50 1st Qu.:-0.162418 1st Qu.:20.00 1st Qu.:51.50
## Median :51.51 Median :-0.124121 Median :26.00 Median :51.51
## Mean :51.51 Mean :-0.125726 Mean :27.72 Mean :51.51
## 3rd Qu.:51.52 3rd Qu.:-0.092762 3rd Qu.:33.00 3rd Qu.:51.52
## Max. :51.55 Max. :-0.002275 Max. :64.00 Max. :51.55
##
## EndStation.Lon EndStationDocks Rental.Id Duration
## Min. :-0.236769 Min. :10.00 Min. :61395909 Min. : -3360
## 1st Qu.:-0.159919 1st Qu.:20.00 1st Qu.:64159124 1st Qu.: 480
## Median :-0.124121 Median :26.00 Median :66902368 Median : 840
## Mean :-0.125442 Mean :27.71 Mean :66890646 Mean : 1223
## 3rd Qu.:-0.092921 3rd Qu.:34.00 3rd Qu.:69628349 3rd Qu.: 1309
## Max. :-0.002275 Max. :64.00 Max. :72340790 Max. :1984694
##
## Bike.Id StartDate StartStation.Id
## Min. : 1 2017-01-09 08:29:00: 132 Min. : 1.0
## 1st Qu.: 4098 2017-01-09 08:32:00: 127 1st Qu.:159.0
## Median : 8073 2017-01-09 08:22:00: 125 Median :330.0
## Mean : 7987 2017-01-09 09:00:00: 124 Mean :362.3
## 3rd Qu.:12128 2017-07-18 17:39:00: 123 3rd Qu.:562.0
## Max. :15642 2017-01-09 08:41:00: 122 Max. :826.0
## (Other) :10010485
## StartStation.Name EndDate
## Belgrove Street , King's Cross : 95421 2017-01-09 08:54:00: 137
## Hyde Park Corner, Hyde Park : 87439 2017-01-09 08:55:00: 134
## Waterloo Station 3, Waterloo : 82942 2017-07-11 08:54:00: 132
## Black Lion Gate, Kensington Gardens: 61551 2017-06-15 08:57:00: 128
## Albert Gate, Hyde Park : 60030 2017-01-09 08:56:00: 123
## Waterloo Station 1, Waterloo : 56799 2017-09-26 08:55:00: 123
## (Other) :9567056 (Other) :10010461
## EndStation.Id EndStation.Name Year
## Min. : 1.0 Belgrove Street , King's Cross : 93197 Min. :2017
## 1st Qu.:156.0 Hyde Park Corner, Hyde Park : 87746 1st Qu.:2017
## Median :322.0 Waterloo Station 3, Waterloo : 78682 Median :2017
## Mean :359.1 Hop Exchange, The Borough : 64299 Mean :2017
## 3rd Qu.:558.0 Albert Gate, Hyde Park : 60653 3rd Qu.:2017
## Max. :826.0 Black Lion Gate, Kensington Gardens: 60100 Max. :2017
## (Other) :9566561
str(london_bikes)
## 'data.frame': 10011238 obs. of 16 variables:
## $ StartStation.Lat : num 51.5 51.5 51.5 51.5 51.5 ...
## $ StartStation.Lon : num -0.19 -0.19 -0.19 -0.19 -0.19 ...
## $ StartStaton.Docks: int 29 29 29 29 29 29 29 29 29 29 ...
## $ EndStation.Lat : num 51.5 51.5 51.5 51.5 51.5 ...
## $ EndStation.Lon : num -0.181 -0.181 -0.181 -0.181 -0.181 ...
## $ EndStationDocks : int 30 30 30 30 30 30 30 30 30 30 ...
## $ Rental.Id : int 63751445 64016293 64334332 64567541 64787260 65022982 67151965 69249880 70675882 72035486 ...
## $ Duration : int 180 180 180 240 180 180 180 180 180 180 ...
## $ Bike.Id : int 3428 13909 11693 4552 5270 2123 11011 7671 518 3983 ...
## $ StartDate : Factor w/ 485939 levels "2017-01-01 00:02:00",..: 123666 133017 147670 158412 167688 177207 252417 334924 393955 461372 ...
## $ StartStation.Id : int 219 219 219 219 219 219 219 219 219 219 ...
## $ StartStation.Name: Factor w/ 770 levels "Abbey Orchard Street, Westminster",..: 93 93 93 93 93 93 93 93 93 93 ...
## $ EndDate : Factor w/ 485448 levels "2017-01-01 00:10:00",..: 123465 132825 147421 158172 167438 176949 252041 334535 393578 460911 ...
## $ EndStation.Id : int 216 216 216 216 216 216 216 216 216 216 ...
## $ EndStation.Name : Factor w/ 770 levels "Abbey Orchard Street, Westminster",..: 480 480 480 480 480 480 480 480 480 480 ...
## $ Year : int 2017 2017 2017 2017 2017 2017 2017 2017 2017 2017 ...
names(london_bikes)
## [1] "StartStation.Lat" "StartStation.Lon" "StartStaton.Docks"
## [4] "EndStation.Lat" "EndStation.Lon" "EndStationDocks"
## [7] "Rental.Id" "Duration" "Bike.Id"
## [10] "StartDate" "StartStation.Id" "StartStation.Name"
## [13] "EndDate" "EndStation.Id" "EndStation.Name"
## [16] "Year"
En primer lugar convertiremos en formato de fecha los timestamp de inicio i finalización
london_bikes <- london_bikes %>%
mutate(StartDate=ymd_hms(StartDate),StartDate=ymd_hms(StartDate),)
head(london_bikes)
## StartStation.Lat StartStation.Lon StartStaton.Docks EndStation.Lat
## 1 51.49016 -0.190393 29 51.49095
## 2 51.49016 -0.190393 29 51.49095
## 3 51.49016 -0.190393 29 51.49095
## 4 51.49016 -0.190393 29 51.49095
## 5 51.49016 -0.190393 29 51.49095
## 6 51.49016 -0.190393 29 51.49095
## EndStation.Lon EndStationDocks Rental.Id Duration Bike.Id StartDate
## 1 -0.18119 30 63751445 180 3428 2017-04-05 22:47:00
## 2 -0.18119 30 64016293 180 13909 2017-04-12 21:41:00
## 3 -0.18119 30 64334332 180 11693 2017-04-23 19:20:00
## 4 -0.18119 30 64567541 240 4552 2017-05-01 20:12:00
## 5 -0.18119 30 64787260 180 5270 2017-05-08 19:44:00
## 6 -0.18119 30 65022982 180 2123 2017-05-15 22:12:00
## StartStation.Id StartStation.Name EndDate
## 1 219 Bramham Gardens, Earl's Court 2017-04-05 22:50:00
## 2 219 Bramham Gardens, Earl's Court 2017-04-12 21:44:00
## 3 219 Bramham Gardens, Earl's Court 2017-04-23 19:23:00
## 4 219 Bramham Gardens, Earl's Court 2017-05-01 20:16:00
## 5 219 Bramham Gardens, Earl's Court 2017-05-08 19:47:00
## 6 219 Bramham Gardens, Earl's Court 2017-05-15 22:15:00
## EndStation.Id EndStation.Name Year
## 1 216 Old Brompton Road, South Kensington 2017
## 2 216 Old Brompton Road, South Kensington 2017
## 3 216 Old Brompton Road, South Kensington 2017
## 4 216 Old Brompton Road, South Kensington 2017
## 5 216 Old Brompton Road, South Kensington 2017
## 6 216 Old Brompton Road, South Kensington 2017
london_bikes2 <- london_bikes %>%
mutate(mes=month(StartDate, label=TRUE), diasem=wday(StartDate, label=TRUE, abbr=TRUE), diasemN=wday(StartDate, label=FALSE), hora=hour(StartDate))
head(london_bikes2)
## StartStation.Lat StartStation.Lon StartStaton.Docks EndStation.Lat
## 1 51.49016 -0.190393 29 51.49095
## 2 51.49016 -0.190393 29 51.49095
## 3 51.49016 -0.190393 29 51.49095
## 4 51.49016 -0.190393 29 51.49095
## 5 51.49016 -0.190393 29 51.49095
## 6 51.49016 -0.190393 29 51.49095
## EndStation.Lon EndStationDocks Rental.Id Duration Bike.Id StartDate
## 1 -0.18119 30 63751445 180 3428 2017-04-05 22:47:00
## 2 -0.18119 30 64016293 180 13909 2017-04-12 21:41:00
## 3 -0.18119 30 64334332 180 11693 2017-04-23 19:20:00
## 4 -0.18119 30 64567541 240 4552 2017-05-01 20:12:00
## 5 -0.18119 30 64787260 180 5270 2017-05-08 19:44:00
## 6 -0.18119 30 65022982 180 2123 2017-05-15 22:12:00
## StartStation.Id StartStation.Name EndDate
## 1 219 Bramham Gardens, Earl's Court 2017-04-05 22:50:00
## 2 219 Bramham Gardens, Earl's Court 2017-04-12 21:44:00
## 3 219 Bramham Gardens, Earl's Court 2017-04-23 19:23:00
## 4 219 Bramham Gardens, Earl's Court 2017-05-01 20:16:00
## 5 219 Bramham Gardens, Earl's Court 2017-05-08 19:47:00
## 6 219 Bramham Gardens, Earl's Court 2017-05-15 22:15:00
## EndStation.Id EndStation.Name Year mes diasem diasemN
## 1 216 Old Brompton Road, South Kensington 2017 abr mié\\. 4
## 2 216 Old Brompton Road, South Kensington 2017 abr mié\\. 4
## 3 216 Old Brompton Road, South Kensington 2017 abr dom\\. 1
## 4 216 Old Brompton Road, South Kensington 2017 may lun\\. 2
## 5 216 Old Brompton Road, South Kensington 2017 may lun\\. 2
## 6 216 Old Brompton Road, South Kensington 2017 may lun\\. 2
## hora
## 1 22
## 2 21
## 3 19
## 4 20
## 5 19
## 6 22
Representamos en un gráfico los doce meses que se incluyen en el dataset para ver muy en general como están distribuidas las cantidades
ggplot(london_bikes2 %>%
group_by(mes) %>%
summarise(cantidad=n()))+
geom_bar(aes(x=mes, weight=cantidad))+
labs(title="Uso de bicicletas públicas - Londres", subtitle="Uso diario (1er cuatrimestre 2020)", x="mes", y="cantidad")
La gráfica obtenidas muestra las diferencias de uso en función de las condiciones estacionales de los diferentes meseses del año, coincidiendo los mayores niveles de tráfico durante los meses de verano
Podemos ampliar el análisis desagregando el día de la semana para ver si se pueden reconocer patrones de uso
ggplot(london_bikes2 %>%
group_by(mes, diasem) %>%
summarise(cantidad=n()))+
geom_bar(aes(x=mes, weight=cantidad, fill=diasem), position="dodge")+
labs(title="Uso de bicicletas públicas - Londres", subtitle="Uso diario (1er cuatrimestre 2020)", x="mes", y="cantidad")
## `summarise()` has grouped output by 'mes'. You can override using the `.groups` argument.
No se aprecian patrones particulares.
ggplot(london_bikes2 %>%
group_by(diasem, hora) %>%
summarise(cantidad=n()))+
geom_line(aes(x=hora, y=cantidad, color=diasem))+
labs(title="Uso de bicicletas públicas - Londres", subtitle="Distribución horaria x dia de la semana", x="hora", y="cantidad")+
scale_colour_manual(values=c("darkgreen", "blue","darkorange","darkcyan","darkviolet","darkred","green"))
## `summarise()` has grouped output by 'diasem'. You can override using the `.groups` argument.
Se pueden notar dos patrones diferentes, uno para los dias hábiles y otro para los fines de semana. Resulta muy similar el uso sábado y domingo (lo del “sábado ingles” parece que ya no se cumple…). Los días habiles aparecen dos picos en lugar de uno, el primero ligeramente más alto que el segundo. Este comportamiento parece razonable teniendo en cuenta los horarios pico de entrada y salida de los trabajos. Hay que considerar un pico intermedio, aunque mucho menor, apenas perceptible pero que se repite durante los dias laborables. Este pico redondeado se ubica en medio de los dos picos principales y presenta un perfil muy similar, aunque menor, al de los fines de semana. Habría que considerar si no se superponen dos fenómenos, el de los viajes al y del trabajo con cierto componente recreativo, posiblemente asociado al turismo.
Facetamos para ver si estos patrones se repiten o incrementan en función de cada mes.
ggplot(london_bikes2 %>%
group_by(mes, diasem, hora) %>%
summarise(cantidad=n()))+
geom_line(aes(x=hora, y=cantidad, color=diasem))+
facet_wrap(~mes)+
scale_colour_manual(values=c("darkgreen", "blue","darkorange","darkcyan","darkviolet","darkred","green"))
## `summarise()` has grouped output by 'mes', 'diasem'. You can override using the `.groups` argument.
Como podemos ver las formas de comportamiento son muy similares aunque se pueden apreciar las diferencias de cantidades atribuibles a cuestiones estacionales
Usaremos un mapa de fondo para interpretar los scatter plots de cantidades de viajes de salida y llegada a cada una de las estaciones.
bbox_london <- make_bbox(london_bikes2$StartStation.Lon, london_bikes2$StartStation.Lat)
bbox_london
## left bottom right top
## -0.2484937 51.4500211 0.0094497 51.5540999
mapa_london <- get_stamenmap(bbox = bbox_london,
maptype = "toner-lite",
zoom=12)
A continuación se muestra el mapa de fondo a utilizar
ggmap(mapa_london)
Agrupamos por estación y contavilizamos la cantidad de viajes de salida de las estaciones
london_bikes_starts <- london_bikes2 %>%
group_by(StartStation.Name) %>%
summarise(cant=n(), StartStation.Lat=mean(StartStation.Lat), StartStation.Lon=mean(StartStation.Lon))
head(london_bikes_starts)
## # A tibble: 6 x 4
## StartStation.Name cant StartStation.Lat StartStation.Lon
## <fct> <int> <dbl> <dbl>
## 1 Abbey Orchard Street, Westminster 15610 51.5 -0.132
## 2 Abbotsbury Road, Holland Park 4011 51.5 -0.206
## 3 Aberdeen Place, St. John's Wood 7558 51.5 -0.176
## 4 Aberfeldy Street, Poplar 1695 51.5 -0.00566
## 5 Abingdon Green, Westminster 19238 51.5 -0.126
## 6 Abingdon Villas, Kensington 7475 51.5 -0.197
Probamos como queda el gráfico de puntos donde se representan la cantidad de viajes de salida por el tamaño y una escala de color
ggplot(london_bikes_starts)+
geom_point(aes(x=StartStation.Lon, y=StartStation.Lat, color=cant, size=cant))
Usamos tamaño y color porque el primer intento solo con tamaño no permitía apreciar donde estaban ubicadas las estaciones de mayor tráfico. la combinación de tamaño con color parmite salvar muy bien ese inconveniente.
Ahora lo representamos con el mapa de Londres de fondo
ggmap(mapa_london)+
geom_point(data=london_bikes_starts, aes(x=StartStation.Lon, y=StartStation.Lat, color=cant, size=cant))
Veamos que diferencias hay entre los viajes de salida de cada estación y los de llegada
london_bikes_end <- london_bikes2 %>%
group_by(EndStation.Name) %>%
summarise(cant=n(), EndStation.Lat=mean(EndStation.Lat), EndStation.Lon=mean(EndStation.Lon))
ggmap(mapa_london)+
geom_point(data=london_bikes_end, aes(x=EndStation.Lon, y=EndStation.Lat, color=cant, size=cant))
No se vislumbran diferencias significativas
Lo que resulta interesante son las ubicaciones de las estaciones con mayor tráfico (tanto de entrada como de salida). Hay dos que parecen estar en ubicaciones cercanas a dos grandes estaciones ferroviarias de Londres, mientras aparecen otras de alto tráfico que parecen estar en los alrededores y el interior del Hyde Park.
Para confirmar esto podemos ordenar uno de los dataset por la cantidad de viajes, de manera descendente
london_bikes_starts <- arrange(london_bikes_starts, desc(cant))
head(london_bikes_starts)
## # A tibble: 6 x 4
## StartStation.Name cant StartStation.Lat StartStation.Lon
## <fct> <int> <dbl> <dbl>
## 1 Belgrove Street , King's Cross 95421 51.5 -0.124
## 2 Hyde Park Corner, Hyde Park 87439 51.5 -0.154
## 3 Waterloo Station 3, Waterloo 82942 51.5 -0.113
## 4 Black Lion Gate, Kensington Gardens 61551 51.5 -0.188
## 5 Albert Gate, Hyde Park 60030 51.5 -0.158
## 6 Waterloo Station 1, Waterloo 56799 51.5 -0.114
Entre las seis estaciones de bicicletas con mayor tráfico de salida aparecen dos grandes estaciones de tren de Londres; King Cross (recuerden a Harry Potter) y Watterloo Station. Mientras que las otras tres corresponden a tres puntos diferentes del Hyde Park, Hayde Park Corner es un punto muy turístico, la esquina del Hyde Park más cercana al Palacio de Buckingham, otra cerca de esta: Albert Gate y la tercera en el centro del Hyde Park: Kensington Gardens. Es más, si miramos las 15 primeras podemos encontrar tres estaciones más del Hyde Park.
La pregunta que sigue es si los viajes de estaciones de tren corresponden a dias laborables y las del Hyde Park a los fines de semana.
Agregamos al dataset una variable que de cuenta si el día de la semana es un dia laborable o corresponde al fin de semana.
london_bikes2_tday <- london_bikes2 %>%
mutate(tday=case_when(
wday(StartDate)==1 ~"Finde",
wday(StartDate)==7 ~"Finde",
wday(StartDate)==2 ~"Laboral",
wday(StartDate)==3 ~"Laboral",
wday(StartDate)==4 ~"Laboral",
wday(StartDate)==5 ~"Laboral",
wday(StartDate)==6 ~"Laboral",
))
head(london_bikes2_tday)
## StartStation.Lat StartStation.Lon StartStaton.Docks EndStation.Lat
## 1 51.49016 -0.190393 29 51.49095
## 2 51.49016 -0.190393 29 51.49095
## 3 51.49016 -0.190393 29 51.49095
## 4 51.49016 -0.190393 29 51.49095
## 5 51.49016 -0.190393 29 51.49095
## 6 51.49016 -0.190393 29 51.49095
## EndStation.Lon EndStationDocks Rental.Id Duration Bike.Id StartDate
## 1 -0.18119 30 63751445 180 3428 2017-04-05 22:47:00
## 2 -0.18119 30 64016293 180 13909 2017-04-12 21:41:00
## 3 -0.18119 30 64334332 180 11693 2017-04-23 19:20:00
## 4 -0.18119 30 64567541 240 4552 2017-05-01 20:12:00
## 5 -0.18119 30 64787260 180 5270 2017-05-08 19:44:00
## 6 -0.18119 30 65022982 180 2123 2017-05-15 22:12:00
## StartStation.Id StartStation.Name EndDate
## 1 219 Bramham Gardens, Earl's Court 2017-04-05 22:50:00
## 2 219 Bramham Gardens, Earl's Court 2017-04-12 21:44:00
## 3 219 Bramham Gardens, Earl's Court 2017-04-23 19:23:00
## 4 219 Bramham Gardens, Earl's Court 2017-05-01 20:16:00
## 5 219 Bramham Gardens, Earl's Court 2017-05-08 19:47:00
## 6 219 Bramham Gardens, Earl's Court 2017-05-15 22:15:00
## EndStation.Id EndStation.Name Year mes diasem diasemN
## 1 216 Old Brompton Road, South Kensington 2017 abr mié\\. 4
## 2 216 Old Brompton Road, South Kensington 2017 abr mié\\. 4
## 3 216 Old Brompton Road, South Kensington 2017 abr dom\\. 1
## 4 216 Old Brompton Road, South Kensington 2017 may lun\\. 2
## 5 216 Old Brompton Road, South Kensington 2017 may lun\\. 2
## 6 216 Old Brompton Road, South Kensington 2017 may lun\\. 2
## hora tday
## 1 22 Laboral
## 2 21 Laboral
## 3 19 Finde
## 4 20 Laboral
## 5 19 Laboral
## 6 22 Laboral
Agrupamos y sumarizamos por estación y dia de la semana para ver si se vislumbran diferentes patrones.
london_bikes_diasem_starts <- london_bikes2_tday %>%
group_by(StartStation.Name,diasem) %>%
summarise(cant=n(), StartStation.Lat=mean(StartStation.Lat), StartStation.Lon=mean(StartStation.Lon))
## `summarise()` has grouped output by 'StartStation.Name'. You can override using the `.groups` argument.
head(london_bikes_diasem_starts)
## # A tibble: 6 x 5
## # Groups: StartStation.Name [1]
## StartStation.Name diasem cant StartStation.Lat StartStation.Lon
## <fct> <ord> <int> <dbl> <dbl>
## 1 Abbey Orchard Street, Westmin~ "dom\\~ 1106 51.5 -0.132
## 2 Abbey Orchard Street, Westmin~ "lun\\~ 2712 51.5 -0.132
## 3 Abbey Orchard Street, Westmin~ "mar\\~ 2881 51.5 -0.132
## 4 Abbey Orchard Street, Westmin~ "mié\\~ 2713 51.5 -0.132
## 5 Abbey Orchard Street, Westmin~ "jue\\~ 2747 51.5 -0.132
## 6 Abbey Orchard Street, Westmin~ "vie\\~ 2272 51.5 -0.132
Representamos facetando por día de la semana
ggmap(mapa_london)+
geom_point(data=london_bikes_diasem_starts, aes(x=StartStation.Lon, y=StartStation.Lat, color=cant, size=cant))+
facet_wrap(~diasem)
Como podemos ver aparece diferenciado el comportamiento “Recreativo” los fines de semana, donde claramente las estaciones con más tráfico son las asociadas al Hyde Park, mientras durante los dias laborables las más resaltadas on las de las estaciones de tren, aunque no deja de haber cierto tráfico importante en el Hyde Park, lo que probablemente se pueda asociar con el componente superpuesto de uso de las bicicletas con fines recreativos-turísticos que señalamos en los gráficos temporales.
Como los mapas facetados quedan muy chicos, podemos representar en dos mápas individuales, filtrando por tday para ver comparativamente fin de semanas vs días laborables
london_bikes_finde_starts <- london_bikes2_tday %>%
group_by(StartStation.Name,tday) %>%
summarise(cant=n(), StartStation.Lat=mean(StartStation.Lat), StartStation.Lon=mean(StartStation.Lon)) %>%
filter(tday=="Finde")
## `summarise()` has grouped output by 'StartStation.Name'. You can override using the `.groups` argument.
london_bikes_Laboral_starts <- london_bikes2_tday %>%
group_by(StartStation.Name,tday) %>%
summarise(cant=n(), StartStation.Lat=mean(StartStation.Lat), StartStation.Lon=mean(StartStation.Lon)) %>%
filter(tday=="Laboral")
## `summarise()` has grouped output by 'StartStation.Name'. You can override using the `.groups` argument.
head(london_bikes_finde_starts)
## # A tibble: 6 x 5
## # Groups: StartStation.Name [6]
## StartStation.Name tday cant StartStation.Lat StartStation.Lon
## <fct> <chr> <int> <dbl> <dbl>
## 1 Abbey Orchard Street, Westminst~ Finde 2285 51.5 -0.132
## 2 Abbotsbury Road, Holland Park Finde 1513 51.5 -0.206
## 3 Aberdeen Place, St. John's Wood Finde 2005 51.5 -0.176
## 4 Aberfeldy Street, Poplar Finde 539 51.5 -0.00566
## 5 Abingdon Green, Westminster Finde 5269 51.5 -0.126
## 6 Abingdon Villas, Kensington Finde 1729 51.5 -0.197
head(london_bikes_Laboral_starts)
## # A tibble: 6 x 5
## # Groups: StartStation.Name [6]
## StartStation.Name tday cant StartStation.Lat StartStation.Lon
## <fct> <chr> <int> <dbl> <dbl>
## 1 Abbey Orchard Street, Westmins~ Labor~ 13325 51.5 -0.132
## 2 Abbotsbury Road, Holland Park Labor~ 2498 51.5 -0.206
## 3 Aberdeen Place, St. John's Wood Labor~ 5553 51.5 -0.176
## 4 Aberfeldy Street, Poplar Labor~ 1156 51.5 -0.00566
## 5 Abingdon Green, Westminster Labor~ 13969 51.5 -0.126
## 6 Abingdon Villas, Kensington Labor~ 5746 51.5 -0.197
ggmap(mapa_london)+
geom_point(data=london_bikes_Laboral_starts, aes(x=StartStation.Lon, y=StartStation.Lat, color=cant, size=cant))
ggmap(mapa_london)+
geom_point(data=london_bikes_finde_starts, aes(x=StartStation.Lon, y=StartStation.Lat, color=cant, size=cant))
Estos gráficos ponen más en evidencia los resultados que ya se vislumbraban en los mapitas facetados. Podemos agregar que durante los días laborables tambien se puede apreciar un tráfico importante en el centro de Londres, en particulaar en la zona de la city, aunque no se aprecia ninguna estación que se destaque particularmente como si lo hacen las dos estaciones de tren mencionadas.