library(tidyverse)
## ── Attaching packages ───────────────────────────────────────────────── tidyverse 1.2.1 ──
## ✔ ggplot2 3.2.1     ✔ purrr   0.3.3
## ✔ tibble  2.1.3     ✔ dplyr   0.8.3
## ✔ tidyr   1.0.0     ✔ stringr 1.4.0
## ✔ readr   1.3.1     ✔ forcats 0.4.0
## ── Conflicts ──────────────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
library(geosphere)
library(dplyr)
data <- read.csv("/local/juninho/people-paths/R/exploratory_analysis/markdown/2017_07_05_full_agg")
  1. Há uma relação entre a distância das viagens e a tempo delas?
#calculando a distância de cada viagem mediante sua latitude e longitude, além de criação de dtata frame contendo as distâncias
dist <- purrr::pmap_df(list(data$from_stop_lon, data$from_stop_lat, data$to_stop_lon, data$to_stop_lat), function(x, y, w, z){tibble::tibble(dist = distHaversine(c(x,y), c(w,z)))})

data_dist <- data %>% bind_cols(dist)
  
diff_hour <- difftime(data$end_time, data$start_time, units = 'hour')

diff_hour <- diff_hour * 60


data_dist %>% ggplot(aes(x = dist, y = diff_hour)) %>% + geom_point() + theme_classic()
## Don't know how to automatically pick scale for object of type difftime. Defaulting to continuous.

Podemos ver que o padrão que se segue na relação entre distância das viagens e o tempo decorrido é linear, ou seja, quanto mais longa for a viagem, mais demorada ela tenderá a ser.

  1. Quais as rotas que, na média, percorrem uma maior distância?
data_dist %>% mutate(route = as.factor(route)) %>% group_by(route) %>% summarise(dist_route = mean(dist)) %>% top_n(20) %>% ggplot(aes(x = reorder(route, -dist_route), y = dist_route)) + geom_col() + theme_bw()
## Selecting by dist_route

Como podemos ver, uma rota, a 659, se destaca como sendo aquela, que na média, faz viagens mais longas. Sua média de distância das viagens chega a 9km. Em seguida, temos as rotas 508, 506 e 646, percorrendo, na média, 8km, 7.8km, 7.7km, respectivamente.

  1. Quais as rotas que, na média, percorrem uma menor distância?
data_dist %>% mutate(route = as.factor(route)) %>% group_by(route) %>% summarise(dist_route = mean(dist)) %>% top_n(-20) %>% ggplot(aes(x = reorder(route, dist_route), y = dist_route)) + geom_col() + theme_bw()
## Selecting by dist_route

Como podemos ver existem algumas rotas que, na média, fazem viagens bem curtas. São caracterizadas por isso. A linha 688, a que faz viagens mais curtas, percorre, na média, apenas 688 metros. Em seguida, temos a linha 829, com 774 metros.

  1. Quais as rotas mais populares, ou seja, aquelas com mais viagens (levando em consideração o passageiro) durante todo o dia?
data %>% mutate(route = as.factor(route)) %>% group_by(route) %>% summarise(rotas = length(route)) %>% top_n(20) %>% ggplot(aes(x = reorder(route, -rotas), y = rotas)) + geom_col() + theme_bw()
## Selecting by rotas

data %>% mutate(route = as.factor(route)) %>% group_by(route) %>% summarise(rotas = length(route)) %>% top_n(20)
## Selecting by rotas
## # A tibble: 20 x 2
##    route rotas
##    <fct> <int>
##  1 20     2657
##  2 21     2748
##  3 22     4953
##  4 23     4783
##  5 30     3988
##  6 40     4390
##  7 50     3317
##  8 203   18456
##  9 204    4571
## 10 303   11970
## 11 502    4782
## 12 503   11683
## 13 505    4039
## 14 506    3750
## 15 507    3986
## 16 545    2845
## 17 550    4310
## 18 602    8456
## 19 603    5644
## 20 703    3144

Podemos ver que a rota que fez mais viagem durante o dia é a 203, onde 18456 viagens foram feitas pelos passageiros, durante o dia. Em seguida, temos a linha 303 com 11970 e 503 com quase 11683 viagens. A explicação do motivo pelo qual a rota 203 possui o maior número de viagens entre as rotas se deve ao fato de que ela vai dos bairros mais próximos do Centro e populosos até o Centro, sendo uma linha que fica ativa por todo o dia. Veremos que a linha 203 permanece sendo a líder de viagens durante todo o dia, em todos os horários. A rota 303 apresenta seu itinerário indo do Centro as regiões Norte, Sul, Leste e Oeste da cidade, explicando sua popularidade.

  1. Quais as rotas menos populares, ou seja, aquelas com menos viagens (levando em consideração o passageiro) durante todo o dia?
data %>% mutate(route = as.factor(route)) %>% group_by(route) %>% summarise(rotas = length(route)) %>% top_n(-20) %>% ggplot(aes(x = reorder(route, rotas), y = rotas)) + geom_col() + theme_bw()
## Selecting by rotas

data %>% mutate(route = as.factor(route)) %>% group_by(route) %>% summarise(rotas = length(route)) %>% top_n(-20)
## Selecting by rotas
## # A tibble: 21 x 2
##    route rotas
##    <fct> <int>
##  1 1        16
##  2 24       21
##  3 181      20
##  4 213      19
##  5 224       1
##  6 311       2
##  7 321       6
##  8 331       7
##  9 343       1
## 10 360      10
## # … with 11 more rows

Podemos ver que as linhas 224, 343, 523 e 912 registraram apenas uma viagem no dia. Em seguida, temos a linha 311 com duas viagens registradas. Certamente, essas rotas não realizaram apenas uma ou duas viagens no dia, alguns dados devem ter sido perdidos.

  1. Quais as rotas cujas viagens são mais demoradas na média?
  data %>% mutate(route = as.factor(route)) %>% group_by(route) %>% summarise(tempo = mean(difftime(end_time, start_time, units = 'hour')) * 60) %>% top_n(10) %>% ggplot(aes(x = reorder(route, -tempo), y = tempo)) + geom_point() + theme_bw()
## Selecting by tempo
## Don't know how to automatically pick scale for object of type difftime. Defaulting to continuous.

data %>% mutate(route = as.factor(route)) %>% group_by(route) %>% summarise(tempo = mean(difftime(end_time, start_time, units = 'hour'))) %>% top_n(20)
## Selecting by tempo
## # A tibble: 20 x 2
##    route tempo          
##    <fct> <drtn>         
##  1 270   0.3876880 hours
##  2 271   0.3740346 hours
##  3 272   0.3875343 hours
##  4 370   0.4856618 hours
##  5 393   0.3720760 hours
##  6 506   0.4861665 hours
##  7 508   0.4006196 hours
##  8 594   0.3890545 hours
##  9 617   0.4154614 hours
## 10 646   0.4684223 hours
## 11 655   0.4037947 hours
## 12 659   0.4533727 hours
## 13 670   0.3822607 hours
## 14 671   0.3831361 hours
## 15 680   0.4531742 hours
## 16 681   0.4189407 hours
## 17 684   0.4257698 hours
## 18 703   0.3877077 hours
## 19 761   0.3969642 hours
## 20 762   0.3902135 hours

Podemos ver que as rotas mais demoradas são a 506, com média de viagem de 29.17 minutos, a 370, com 29.14 minutos e a 646 com 28.1 minutos, respectivamente. A rota 506 percorre uma distância que vai do centro da cidade até regiões afastadas localizadas quase fora dos limites da cidade, como o Sítio Cercado. Hauer, Fanny e BR-476 são locais cobertos pela rota. A rota 370 apresenta um padrão parecido com a 506, indo de uma região afastada (Campo Comprido) até a região central.

  1. Quais as rotas cujas viagens são mais rápidas na média?
data %>% mutate(route = as.factor(route)) %>% group_by(route) %>% summarise(tempo = mean(difftime(end_time, start_time, units = 'hour')) * 60) %>% top_n(-20) %>% ggplot(aes(x = reorder(route, tempo), y = tempo)) + geom_point() + theme_bw()
## Selecting by tempo
## Don't know how to automatically pick scale for object of type difftime. Defaulting to continuous.

Podemos ver que as rotas cujas viagens na média são mais rápidas são a 343, com média de 2.25 minutos, a 912, com média 3.5 minutos e a 311, com média de 4.6 minutos, respectivamente. A pouca distância percorrida pela rota 343 se explica no fato de que seu itinário é muito curto, praticamente cruzando uma parte do Bairro ALto. A linha 912, que não opera aos domingos cruza de forma quase reta a Avenida Manoel Ribas.

  1. Quais as rotas mais populares (lotadas) das 17h as 19h?
data_dist$new_start_time <- format(as.POSIXct(data_dist$start_time), "%H:%M:%S")
data_dist$new_end_time <- format(as.POSIXct(data_dist$end_time), "%H:%M:%S")


new_data_dist <- data_dist[data_dist$new_start_time >= "17:00:00" & data_dist$new_end_time <= "19:00:00",]

perc = nrow(new_data_dist)/nrow(data_dist)
perc
## [1] 0.1633195
new_data_dist %>% mutate(route = (as.factor(route))) %>% group_by(route) %>% summarise(quantidade = length(route)) %>% top_n(20) %>% ggplot(aes(x = reorder(route, -quantidade), y = quantidade)) + geom_col() + theme_bw()
## Selecting by quantidade

new_data_dist %>% mutate(route = (as.factor(route))) %>% group_by(route) %>% summarise(quantidade = length(route)) %>% top_n(20)
## Selecting by quantidade
## # A tibble: 20 x 2
##    route quantidade
##    <fct>      <int>
##  1 20           506
##  2 21           487
##  3 22           863
##  4 23           965
##  5 30           759
##  6 40           714
##  7 203         3299
##  8 204          500
##  9 216          435
## 10 303         1783
## 11 502         1064
## 12 503         2719
## 13 505          594
## 14 506          449
## 15 507          409
## 16 535          468
## 17 545          516
## 18 550          841
## 19 602         1977
## 20 603         1181

Primeiro, vemos que cerca de 16.3% das viagens realizadas no dia foram feitas no horário entre 17h e 19h. As rotas mais populares nesse horário são as 203, 503 e 602 com 3299, 2719 e 1977 viagens feitas, respectivamente. A 203, como já era esperado, é líder em números de viagens nesse horário por ser em todos os outros. A linha 503, por ser uma linha que liga bairros populares ao Centro aparece como uma razoável alternativa para a volta do Centro para casa nesse horário, já que ela interliga o Centro a praticamente todos os lugares mais populosos do horário de pico pela manhã, fato que é aplicado também a linha 602.

  1. Quais as rotas menos populares (lotadas) das 17h as 19h?
new_data_dist <- data_dist[data_dist$new_start_time >= "17:00:00" & data_dist$new_end_time <= "19:00:00",]

new_data_dist %>% mutate(route = (as.factor(route))) %>% group_by(route) %>% summarise(quantidade = length(route)) %>% top_n(-20) %>% ggplot(aes(x = reorder(route, quantidade), y = quantidade)) + geom_col() + theme_bw()
## Selecting by quantidade

  1. Quais as rotas mais populares (lotadas) das 6:30h as 8:30h?
new_data_dist <- data_dist[data_dist$new_start_time >= "06:30:00" & data_dist$new_end_time <= "08:30:00",]


perc = nrow(new_data_dist)/nrow(data_dist)
perc
## [1] 0.2283019
new_data_dist %>% mutate(route = (as.factor(route))) %>% group_by(route) %>% summarise(quantidade = length(route)) %>% top_n(20) %>% ggplot(aes(x = reorder(route, -quantidade), y = quantidade)) + geom_col() +
  theme_bw()
## Selecting by quantidade

new_data_dist %>% mutate(route = (as.factor(route))) %>% group_by(route) %>% summarise(quantidade = length(route)) %>% top_n(20)
## Selecting by quantidade
## # A tibble: 20 x 2
##    route quantidade
##    <fct>      <int>
##  1 21           636
##  2 22          1187
##  3 23          1136
##  4 30          1063
##  5 40          1117
##  6 50           664
##  7 203         3427
##  8 204         1195
##  9 303         2971
## 10 304          863
## 11 502          898
## 12 503         1589
## 13 505         1090
## 14 506         1277
## 15 507         1107
## 16 508          632
## 17 550         1577
## 18 602         1508
## 19 603         1056
## 20 703          706

Primeiro, vemos que 23% das viagens feitas no dia são feitas nesse período de tempo. As rotas mais populares nesse período são as linhas 203, 303 e 550 com 3427, 2971 e 1589 viagens feitas, respectivamente. A linha 303 aparece, nesse horário, de forma isolada, como a linha mais populosa (depois da 203). Isso deve-se ao fato de que sua linha cruza toda a cidade de leste a oeste. Aqueles que moram em bairros como Mossunguê, Campina do Siqueira, Bigorrilho, Jardim Botânico e Cajuru geralmente trabalham ou estudam na região Central da cidade, pois é no Centro que os principais postos de trabalho e estudo estão. Sendo assim, nesse horário, as pessoas dos seguintes bairros estão indo em direção ao Centro para trabalhar ou estudar. Vemos que a linha 503, outra linha bastante popular nesse horário, também possui a natureza do itinerário similar a do 303. Bairros como Xaxim, Fanny, Hauer e Parolin são ligados ao Centro.

  1. Quais as rotas menos populares (lotadas) das 6:30h as 8:30h?
new_data_dist <- data_dist[data_dist$new_start_time >= "06:30:00" & data_dist$new_end_time <= "08:30:00",]

new_data_dist %>% mutate(route = (as.factor(route))) %>% group_by(route) %>% summarise(quantidade = length(route)) %>% top_n(-20) %>% ggplot(aes(x = reorder(route, quantidade), y = quantidade)) + geom_col() + theme_bw()
## Selecting by quantidade

  1. Quais as rotas mais populares (lotadas) das 11:00h as 13:00h?
new_data_dist <- data_dist[data_dist$new_start_time >= "11:00:00" & data_dist$new_end_time <= "13:00:00",]

perc = nrow(new_data_dist)/nrow(data_dist)
perc
## [1] 0.08387775
new_data_dist %>% mutate(route = (as.factor(route))) %>% group_by(route) %>% summarise(quantidade = length(route)) %>% top_n(20) %>% ggplot(aes(x = reorder(route, -quantidade), y = quantidade)) + geom_col() + theme_bw()
## Selecting by quantidade

Primeiro, vemos que 8.4% das viagens feitas no dia são nesse intervalo de tempo. As rotas mais populares nesse período são as linhas 203, 303 e 503 com 1657, 1035 e 880 viagens feitas, respectivamente. As rotas mais populares nesse horário seguem o padrão dos demais horários, liderando a 203, tendo a 303 e 602 entre as mais populares. Um destaque fica para a linha 550 que não aparece no top 20 de popularidade, estando nos outros horários de pico integrante do top 10. Isso, possivelmente, deve-se ao fato de que há outras rotas que fazem o trajeto similar ao 550 e levam para os mesmos destinos.

  1. Quais as rotas menos populares (lotadas) das 11:00h as 13:00h?
new_data_dist <- data_dist[data_dist$new_start_time >= "11:00:00" & data_dist$new_end_time <= "13:00:00",]
new_data_dist %>% mutate(route = (as.factor(route))) %>% group_by(route) %>% summarise(quantidade = length(route)) %>% top_n(-20) %>% ggplot(aes(x = reorder(route, quantidade), y = quantidade)) + geom_col() + theme_bw()
## Selecting by quantidade

#função que transforma a hora contínua em uma hora discreta. Depois fazer um mutate com o resultado da função e fazer a análise por essa nova variável gerada.
lubridate::hour(lubridate::ymd_hms("2017-07-05 11:02:32"))
## [1] 11
  1. Tendo a rota 203 como a mais popular, como se dá a distribuição da quantidade de viagens durante todo o dia? (considerando o horário de embarque)

Primeiro, precisamos transformar a hora contínua em um conjunto discreto da mesma. Pegaremos a faixa de horário das 4:30h (quando os õnibus começam a operar pela cidade) até às 0h (quando os ônibus deixam de operar na cidade).

lubridate::hour(lubridate::ymd_hms("2017-07-05 11:02:32"))
## [1] 11
new_data_dist <- data_dist %>% mutate(boarding_time = lubridate::hour(lubridate::ymd_hms(start_time)))


new_data_dist %>% filter(route == "203") %>% group_by(boarding_time) %>% summarise(quantidade = length(route)) %>% ggplot(aes(x = boarding_time, y = quantidade)) + geom_col() + theme_bw()

Podemos ver que o maior número de viagens na linha 203 são nos horários de pico tradicionais (7h as 8h e 17h as 18h). Das 7h as 7:59h há a maior quantidade de viagens na rota, mais de 2500 viagens feitas. Em seguida, temos a faixa das 18h as 18:59h, com cerca de 1800 viagens feitas.

  1. A rota 204 apresenta um comportamento interessante. No horário das 6:30 as 8:30 ela apresenta cerca de 1200 viagens, já das 17h as 19h apenas 500 viagens, uma queda de cerca de 58%. Vamos a distribuião da rota 204 durante todo o dia.
new_data_dist %>% filter(route == "204") %>% group_by(boarding_time) %>% summarise(quantidade = length(route)) %>% ggplot(aes(x = boarding_time, y = quantidade)) + geom_col() + theme_bw()

Podemos ver que o horário onde a rota é mais requisitada é o horário das 6h as 8h. Vemos que durante todo o restante do dia a qauntidade de viagens cai pela metade em alguns horários e até menos que isso. Podemos chegar a conclusão que aqueles que embarcam, pela manhã, na rota 204, voltam aos seus bairros de origem por outras rotas. Podemos chegar a conclusão também de que a rota 204 não se encontra em uma região periférica, já que no início do dia é quando os usuários precisam sair do bairro onde moram para irem até seus trabalhos e estudos.

  1. Analisando agora a rota 506, outra rota que mostra variação na quantidade de viagens nos horários de pico. Fez 3750 das 17h às 19h e 1277 das 6h às 8h.
new_data_dist %>% filter(route == "506") %>% group_by(boarding_time) %>% summarise(quantidade = length(route)) %>% ggplot(aes(x = boarding_time, y = quantidade)) + geom_col() + theme_bw()

  1. Analisando a rota 550, já que a mesma apresenta uma grande variação entre o horário de 11:00h as 13:00 e os outros horários de pico.
new_data_dist %>% filter(route == "550") %>% group_by(boarding_time) %>% summarise(quantidade = length(route)) %>% ggplot(aes(x = boarding_time, y = quantidade)) + geom_col() + theme_bw()

new_data_dist %>% filter(route == "550") %>% group_by(boarding_time) %>% summarise(quantidade = length(route)) %>% top_n(20)
## Selecting by quantidade
## # A tibble: 19 x 2
##    boarding_time quantidade
##            <int>      <int>
##  1             5         33
##  2             6        257
##  3             7       1281
##  4             8        483
##  5             9         71
##  6            10        118
##  7            11         91
##  8            12        166
##  9            13        238
## 10            14        157
## 11            15        140
## 12            16        133
## 13            17        381
## 14            18        547
## 15            19         95
## 16            20         30
## 17            21         44
## 18            22         43
## 19            23          2

Podemos ver que o horário das 11h as 13h apresenta uma baixa quantidade de viagens, considerando que esse é um horário de pico. Isso deve-se, provavelmente, ao fato de que nesse horário há outras rotas que fazem o mesmo trajeto que o 550 levando para os principais destinos. Sendo assim, nesse horário, a popularidade da rota é esvaziada, pela ‘concorrência’ com as outras rotas. O fato da rota 550 mostrar grande popularidade no horário das 6h as 8h deve-se ao fato de que, nesse horário, as pessoas estão saindo de seus bairros e indo em direção ao Centro para fazer suas atividade de estudo e trabalho. A rota leva bairros populosos como Capão Raso, Xaxim, Hauer, Parolin ao Centro. Para os horários de 11h as 13h e 17h e 19h há outras rotas que saem do Centro indo em direção a esses bairros citados, por isso, o número de viagens nessa rota diminui consideravelmente.

  1. Analisando a rota 503.
new_data_dist %>% filter(route == "503") %>% group_by(boarding_time) %>% summarise(quantidade = length(route)) %>% ggplot(aes(x = boarding_time, y = quantidade)) + geom_col() + theme_bw()

new_data_dist %>% filter(route == "503") %>% group_by(boarding_time) %>% summarise(quantidade = length(route)) %>% top_n(20)
## Selecting by quantidade
## # A tibble: 19 x 2
##    boarding_time quantidade
##            <int>      <int>
##  1             5         75
##  2             6        395
##  3             7       1181
##  4             8        722
##  5             9        359
##  6            10        350
##  7            11        434
##  8            12        632
##  9            13        620
## 10            14        517
## 11            15        632
## 12            16        706
## 13            17       1259
## 14            18       2047
## 15            19        672
## 16            20        468
## 17            21        386
## 18            22        221
## 19            23          7

A rota 503 apresenta sua popularidade mais elevada no horário das 17h as 18h.

A seguir, analisaremos o comportamento das seguintes rotas: 503, 602, 303, 603, 502, 23, 22, 30, 40, 505, 545, 20, 21, 535 com o propósito de vermos como se dá a distribuição da quantidade de viagens e as horas do dia. Veremos aquelas rotas que são mais populares no pico das 6h as 8h e outras das 17h as 19h. Poderemos, assim, ver quais rotas podem ser condidadatas a substituírem outras nas viagens de determinados horários. Aquelas que demonstram picos das 6h as 8h geralmente possuem outras rota que passam pelos destinos de origem das mesmas, fazendo com que o número das viagens dessa determinada rota caia em outros horários (como das 17h as 19h, por exemplo) em função da substituição das viagens.

Rotas que possuem o pico da quantidade de viagens no horário das 6h as 8h: 303, 22, 30, 40, 505, 21, 23 Rotas que possuem o pico da quantidade de viagens no horário das 17h as 19h: 503, 602, 20, 603, 502 Rotas que possuem o pico da quantidade de viagens nos dois horários: 545, 535

As rotas que possuem o pico da quantidade de viagens nos dois horários são as que possuem mais possibilidades de que os passageiros que a pegam manhã a pegam também na volta para suas casa no horário de pico da noite.

new_data_dist %>% filter(route == "503") %>% group_by(boarding_time) %>% summarise(quantidade = length(route)) %>% ggplot(aes(x = boarding_time, y = quantidade)) + geom_col() + theme_bw()

new_data_dist %>% filter(route == "602") %>% group_by(boarding_time) %>% summarise(quantidade = length(route)) %>% ggplot(aes(x = boarding_time, y = quantidade)) + geom_col() + theme_bw()

new_data_dist %>% filter(route == "303") %>% group_by(boarding_time) %>% summarise(quantidade = length(route)) %>% ggplot(aes(x = boarding_time, y = quantidade)) + geom_col() + theme_bw()

new_data_dist %>% filter(route == "603") %>% group_by(boarding_time) %>% summarise(quantidade = length(route)) %>% ggplot(aes(x = boarding_time, y = quantidade)) + geom_col() + theme_bw()

new_data_dist %>% filter(route == "502") %>% group_by(boarding_time) %>% summarise(quantidade = length(route)) %>% ggplot(aes(x = boarding_time, y = quantidade)) + geom_col() + theme_bw()

new_data_dist %>% filter(route == "23") %>% group_by(boarding_time) %>% summarise(quantidade = length(route)) %>% ggplot(aes(x = boarding_time, y = quantidade)) + geom_col() + theme_bw()

new_data_dist %>% filter(route == "22") %>% group_by(boarding_time) %>% summarise(quantidade = length(route)) %>% ggplot(aes(x = boarding_time, y = quantidade)) + geom_col() + theme_bw()

new_data_dist %>% filter(route == "30") %>% group_by(boarding_time) %>% summarise(quantidade = length(route)) %>% ggplot(aes(x = boarding_time, y = quantidade)) + geom_col() + theme_bw()

new_data_dist %>% filter(route == "40") %>% group_by(boarding_time) %>% summarise(quantidade = length(route)) %>% ggplot(aes(x = boarding_time, y = quantidade)) + geom_col() + theme_bw()

new_data_dist %>% filter(route == "505") %>% group_by(boarding_time) %>% summarise(quantidade = length(route)) %>% ggplot(aes(x = boarding_time, y = quantidade)) + geom_col() + theme_bw()

new_data_dist %>% filter(route == "545") %>% group_by(boarding_time) %>% summarise(quantidade = length(route)) %>% ggplot(aes(x = boarding_time, y = quantidade)) + geom_col() + theme_bw()

new_data_dist %>% filter(route == "20") %>% group_by(boarding_time) %>% summarise(quantidade = length(route)) %>% ggplot(aes(x = boarding_time, y = quantidade)) + geom_col() + theme_bw()

new_data_dist %>% filter(route == "21") %>% group_by(boarding_time) %>% summarise(quantidade = length(route)) %>% ggplot(aes(x = boarding_time, y = quantidade)) + geom_col() + theme_bw()

new_data_dist %>% filter(route == "535") %>% group_by(boarding_time) %>% summarise(quantidade = length(route)) %>% ggplot(aes(x = boarding_time, y = quantidade)) + geom_col() + theme_bw()