Cargamos librerias a utilizar

library(tidyverse)
library(sf)
library(ggmap)
library(lubridate)

Preparación de datasets

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

Primeras representaciones de los datos

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.

Tráfico a lo largo de los días de la semana

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


Representación espacial, mapas de calor

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.