el resto es la explicación del código
## # A tibble: 336,776 x 19
## year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time
## <int> <int> <int> <int> <int> <dbl> <int> <int>
## 1 2013 1 1 517 515 2 830 819
## 2 2013 1 1 533 529 4 850 830
## 3 2013 1 1 542 540 2 923 850
## 4 2013 1 1 544 545 -1 1004 1022
## 5 2013 1 1 554 600 -6 812 837
## 6 2013 1 1 554 558 -4 740 728
## 7 2013 1 1 555 600 -5 913 854
## 8 2013 1 1 557 600 -3 709 723
## 9 2013 1 1 557 600 -3 838 846
## 10 2013 1 1 558 600 -2 753 745
## # … with 336,766 more rows, and 11 more variables: arr_delay <dbl>,
## # carrier <chr>, flight <int>, tailnum <chr>, origin <chr>, dest <chr>,
## # air_time <dbl>, distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>
Ver nombres originales de las columnas
colnames(flights)
## [1] "year" "month" "day" "dep_time"
## [5] "sched_dep_time" "dep_delay" "arr_time" "sched_arr_time"
## [9] "arr_delay" "carrier" "flight" "tailnum"
## [13] "origin" "dest" "air_time" "distance"
## [17] "hour" "minute" "time_hour"
1 Seleccionar del data frame flights los campos carrier, número de vuelo (flight), origen, destino, tiempo de vuelo y distancia recorrida
flights_1 <- flights%>%
select("flight","origin","dest","air_time", "distance")
flights_1
## # A tibble: 336,776 x 5
## flight origin dest air_time distance
## <int> <chr> <chr> <dbl> <dbl>
## 1 1545 EWR IAH 227 1400
## 2 1714 LGA IAH 227 1416
## 3 1141 JFK MIA 160 1089
## 4 725 JFK BQN 183 1576
## 5 461 LGA ATL 116 762
## 6 1696 EWR ORD 150 719
## 7 507 EWR FLL 158 1065
## 8 5708 LGA IAD 53 229
## 9 79 JFK MCO 140 944
## 10 301 LGA ORD 138 733
## # … with 336,766 more rows
2 Seleccionar del data frame flights todos los campos entre year y day (incluyéndolo)
A partir de este data frame, podemos identificar que nuestros datos comienzan el 1 de Enero de 2013 y terminan el 31 de enero del mismo año.
flights_dates <- flights%>%
select("year","month","day")
flights_dates
## # A tibble: 336,776 x 3
## year month day
## <int> <int> <int>
## 1 2013 1 1
## 2 2013 1 1
## 3 2013 1 1
## 4 2013 1 1
## 5 2013 1 1
## 6 2013 1 1
## 7 2013 1 1
## 8 2013 1 1
## 9 2013 1 1
## 10 2013 1 1
## # … with 336,766 more rows
3 Seleccionar del data frame flights todos los campos con exepción de hour, minute y time_hour
flights_no_time <- flights%>%
select(-"hour",-"minute",-"time_hour")
flights_no_time
## # A tibble: 336,776 x 16
## year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time
## <int> <int> <int> <int> <int> <dbl> <int> <int>
## 1 2013 1 1 517 515 2 830 819
## 2 2013 1 1 533 529 4 850 830
## 3 2013 1 1 542 540 2 923 850
## 4 2013 1 1 544 545 -1 1004 1022
## 5 2013 1 1 554 600 -6 812 837
## 6 2013 1 1 554 558 -4 740 728
## 7 2013 1 1 555 600 -5 913 854
## 8 2013 1 1 557 600 -3 709 723
## 9 2013 1 1 557 600 -3 838 846
## 10 2013 1 1 558 600 -2 753 745
## # … with 336,766 more rows, and 8 more variables: arr_delay <dbl>,
## # carrier <chr>, flight <int>, tailnum <chr>, origin <chr>, dest <chr>,
## # air_time <dbl>, distance <dbl>
4 Seleccionar del data frame flights todos los campos que inicien con “dep”
flights_dep <- flights%>%
select(starts_with("dep"))
flights_dep
## # A tibble: 336,776 x 2
## dep_time dep_delay
## <int> <dbl>
## 1 517 2
## 2 533 4
## 3 542 2
## 4 544 -1
## 5 554 -6
## 6 554 -4
## 7 555 -5
## 8 557 -3
## 9 557 -3
## 10 558 -2
## # … with 336,766 more rows
5 Seleccionar del data frame flights todos los campos que terminen con “delay”
A partir de este data frame, podemos ver que hay más retrasos en las llegadas
flights_delay <- flights%>%
select(ends_with("delay"))
flights_delay
## # A tibble: 336,776 x 2
## dep_delay arr_delay
## <dbl> <dbl>
## 1 2 11
## 2 4 20
## 3 2 33
## 4 -1 -18
## 5 -6 -25
## 6 -4 12
## 7 -5 19
## 8 -3 -14
## 9 -3 -8
## 10 -2 8
## # … with 336,766 more rows
6 Seleccionar del data frame flights todos los campos que contengan “time”
Aquí podemos facilmente identificar los retrasos (tanto en los despegues como en las llegadas) y el cumplimiento de tiempos de todos los vuelos
flights_time <- flights%>%
select(contains("time"))
flights_time
## # A tibble: 336,776 x 6
## dep_time sched_dep_time arr_time sched_arr_time air_time time_hour
## <int> <int> <int> <int> <dbl> <dttm>
## 1 517 515 830 819 227 2013-01-01 05:00:00
## 2 533 529 850 830 227 2013-01-01 05:00:00
## 3 542 540 923 850 160 2013-01-01 05:00:00
## 4 544 545 1004 1022 183 2013-01-01 05:00:00
## 5 554 600 812 837 116 2013-01-01 06:00:00
## 6 554 558 740 728 150 2013-01-01 05:00:00
## 7 555 600 913 854 158 2013-01-01 06:00:00
## 8 557 600 709 723 53 2013-01-01 06:00:00
## 9 557 600 838 846 140 2013-01-01 06:00:00
## 10 558 600 753 745 138 2013-01-01 06:00:00
## # … with 336,766 more rows
7 Seleccionar del data frame flights los campos de year a day, los que terminen con delay y los campos distance y air_time. 7.1 Agregar: - Tiempo_ganado = Restar la hora de llegada a la hora de partida
8 Nuevos campos calculados con transmute()
A partir de este data frame, podemos observar que a mayor velocidad, mayor tiempo ganado.. por lo tanto si las aerolíneas quieren cumplir con tiempos y no causar retrasos, deberán de intentar llevar una velocidad alta a lo largo del trayecto
flights_2 <- flights %>%
select("year", "month", "day",starts_with("dep")|ends_with("delay") |contains("time"), "distance" )%>%
transmute(tiempo_ganado= arr_time - dep_time, velocidad_vuelo= distance/air_time*60)
flights_2
## # A tibble: 336,776 x 2
## tiempo_ganado velocidad_vuelo
## <int> <dbl>
## 1 313 370.
## 2 317 374.
## 3 381 408.
## 4 460 517.
## 5 258 394.
## 6 186 288.
## 7 358 404.
## 8 152 259.
## 9 281 405.
## 10 195 319.
## # … with 336,766 more rows
9 Muestra los vuelos que presentan un retraso superior a 2 horas a la hora de llegada
Aquí podemos ver que durante 201310,034 vuelos llegaron a su destino 2 horas más tarde de lo previsto
flights_delay_over2<- flights%>%
filter(arr_delay>120)
flights_delay_over2
## # A tibble: 10,034 x 19
## year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time
## <int> <int> <int> <int> <int> <dbl> <int> <int>
## 1 2013 1 1 811 630 101 1047 830
## 2 2013 1 1 848 1835 853 1001 1950
## 3 2013 1 1 957 733 144 1056 853
## 4 2013 1 1 1114 900 134 1447 1222
## 5 2013 1 1 1505 1310 115 1638 1431
## 6 2013 1 1 1525 1340 105 1831 1626
## 7 2013 1 1 1549 1445 64 1912 1656
## 8 2013 1 1 1558 1359 119 1718 1515
## 9 2013 1 1 1732 1630 62 2028 1825
## 10 2013 1 1 1803 1620 103 2008 1750
## # … with 10,024 more rows, and 11 more variables: arr_delay <dbl>,
## # carrier <chr>, flight <int>, tailnum <chr>, origin <chr>, dest <chr>,
## # air_time <dbl>, distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>
10 Muestra los vuelos que presentan un retraso superior a 2 horas en la hora de llegada o en la hora de partida
La anterior data frame nos mostraba 10,034 filas y esta solo incrementó a 11,422. Por lo tanto, podemos observar que los retrasos son mucho más frecuentes al tratarse de las llegadas
flights_delay_2<- flights%>%
filter(arr_delay>120|dep_delay>120)
flights_delay_2
## # A tibble: 11,422 x 19
## year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time
## <int> <int> <int> <int> <int> <dbl> <int> <int>
## 1 2013 1 1 811 630 101 1047 830
## 2 2013 1 1 848 1835 853 1001 1950
## 3 2013 1 1 957 733 144 1056 853
## 4 2013 1 1 1114 900 134 1447 1222
## 5 2013 1 1 1505 1310 115 1638 1431
## 6 2013 1 1 1525 1340 105 1831 1626
## 7 2013 1 1 1540 1338 122 2020 1825
## 8 2013 1 1 1549 1445 64 1912 1656
## 9 2013 1 1 1558 1359 119 1718 1515
## 10 2013 1 1 1732 1630 62 2028 1825
## # … with 11,412 more rows, and 11 more variables: arr_delay <dbl>,
## # carrier <chr>, flight <int>, tailnum <chr>, origin <chr>, dest <chr>,
## # air_time <dbl>, distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>
11 Ahora, muestra los vuelos que NO presentan un retraso superior a 2 horas en la hora de llegada o en la hora de partida
Aquí podemos ver que a pesar de la frecuencia de los retrasos, tanto en llegada como despegue, la mayoría de los vuelos (319,911 de 336,776) no llega a apresentar un retraso que exceda las 2hrs
flights_on_time<- flights%>%
filter(arr_delay<120 | dep_delay<120)
flights_on_time
## # A tibble: 319,911 x 19
## year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time
## <int> <int> <int> <int> <int> <dbl> <int> <int>
## 1 2013 1 1 517 515 2 830 819
## 2 2013 1 1 533 529 4 850 830
## 3 2013 1 1 542 540 2 923 850
## 4 2013 1 1 544 545 -1 1004 1022
## 5 2013 1 1 554 600 -6 812 837
## 6 2013 1 1 554 558 -4 740 728
## 7 2013 1 1 555 600 -5 913 854
## 8 2013 1 1 557 600 -3 709 723
## 9 2013 1 1 557 600 -3 838 846
## 10 2013 1 1 558 600 -2 753 745
## # … with 319,901 more rows, and 11 more variables: arr_delay <dbl>,
## # carrier <chr>, flight <int>, tailnum <chr>, origin <chr>, dest <chr>,
## # air_time <dbl>, distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>
12 Muestra los vuelos realizados en los meses de Noviembre y Diciembre
Podemos observar que durante los dos últimos meses del año se realizaron muchos vuelos (+ del 15% del total del año), por lo que podemos asumir que esta es una buena temporada para las aerolíneas… seguramente por la temporada de fiestas y el aumento de viajes que esta genera
flights_end_of_year<- flights%>%
filter(month=="12" | month=="11")
flights_end_of_year
## # A tibble: 55,403 x 19
## year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time
## <int> <int> <int> <int> <int> <dbl> <int> <int>
## 1 2013 11 1 5 2359 6 352 345
## 2 2013 11 1 35 2250 105 123 2356
## 3 2013 11 1 455 500 -5 641 651
## 4 2013 11 1 539 545 -6 856 827
## 5 2013 11 1 542 545 -3 831 855
## 6 2013 11 1 549 600 -11 912 923
## 7 2013 11 1 550 600 -10 705 659
## 8 2013 11 1 554 600 -6 659 701
## 9 2013 11 1 554 600 -6 826 827
## 10 2013 11 1 554 600 -6 749 751
## # … with 55,393 more rows, and 11 more variables: arr_delay <dbl>,
## # carrier <chr>, flight <int>, tailnum <chr>, origin <chr>, dest <chr>,
## # air_time <dbl>, distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>
13 Muestra los vuelos operados por United, American o Delta
UA= United Airlines AA= American Airlines DL= Delta
En este data frame, podemos observar que las airolíneas UA, AA y DL representan un número importante de los vuelos contendios en la base de datos, por lo tanto están bastante bien posicionadas en el mercado
flights_airlines<- flights%>%
filter(carrier== "UA" | carrier== "AA" |carrier== "DL" )
flights_airlines
## # A tibble: 139,504 x 19
## year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time
## <int> <int> <int> <int> <int> <dbl> <int> <int>
## 1 2013 1 1 517 515 2 830 819
## 2 2013 1 1 533 529 4 850 830
## 3 2013 1 1 542 540 2 923 850
## 4 2013 1 1 554 600 -6 812 837
## 5 2013 1 1 554 558 -4 740 728
## 6 2013 1 1 558 600 -2 753 745
## 7 2013 1 1 558 600 -2 924 917
## 8 2013 1 1 558 600 -2 923 937
## 9 2013 1 1 559 600 -1 941 910
## 10 2013 1 1 559 600 -1 854 902
## # … with 139,494 more rows, and 11 more variables: arr_delay <dbl>,
## # carrier <chr>, flight <int>, tailnum <chr>, origin <chr>, dest <chr>,
## # air_time <dbl>, distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>
14 Ordena flights para encontrar los vuelos más retrasados, el campo arr_delay indica el retraso a la llegada, ordena en forma descendente.
Aquí podemos observar que el peor retraso fue de 1272 minutos y por parte de la aereolínea Hawaiian Airlines (HA). Sin embargo, la que presenta más retrasos en el ranking, es American Eagle Airlines (MQ), pues ese carrier se repite 4 veces en los primeros 10
flights_most_delay<- flights%>%
arrange(desc(arr_delay))
flights_most_delay
## # A tibble: 336,776 x 19
## year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time
## <int> <int> <int> <int> <int> <dbl> <int> <int>
## 1 2013 1 9 641 900 1301 1242 1530
## 2 2013 6 15 1432 1935 1137 1607 2120
## 3 2013 1 10 1121 1635 1126 1239 1810
## 4 2013 9 20 1139 1845 1014 1457 2210
## 5 2013 7 22 845 1600 1005 1044 1815
## 6 2013 4 10 1100 1900 960 1342 2211
## 7 2013 3 17 2321 810 911 135 1020
## 8 2013 7 22 2257 759 898 121 1026
## 9 2013 12 5 756 1700 896 1058 2020
## 10 2013 5 3 1133 2055 878 1250 2215
## # … with 336,766 more rows, and 11 more variables: arr_delay <dbl>,
## # carrier <chr>, flight <int>, tailnum <chr>, origin <chr>, dest <chr>,
## # air_time <dbl>, distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>
15 Ordena flights para encontrar los vuelos más rápidos (velocidad más alta).
Por otro lado, las aerolineas más rápidas se muestran en este dataset. La máxima velocidad de vuelo fue de Delta airlines, con una velocidad de 703.3846 y basándonos en la repetición dentro del ranking, tambíen fue la más veloz en general, pues aparece 4 veces en los primeros 10.
flights_fastest<- flights%>%
select("distance", "air_time", "carrier")%>%
mutate(velocidad_vuelo = (distance / air_time) * 60)%>%
arrange(desc(velocidad_vuelo))
flights_fastest
## # A tibble: 336,776 x 4
## distance air_time carrier velocidad_vuelo
## <dbl> <dbl> <chr> <dbl>
## 1 762 65 DL 703.
## 2 1008 93 EV 650.
## 3 594 55 EV 648
## 4 748 70 EV 641.
## 5 1035 105 DL 591.
## 6 1598 170 DL 564
## 7 1598 172 B6 557.
## 8 1623 175 AA 556.
## 9 1598 173 DL 554.
## 10 1598 173 B6 554.
## # … with 336,766 more rows
16 Cuál es la media del retraso en los vuelos, agrupa por year, month, day Identifica el día, mes, año que tuvo menos retraso.
En esta tabla podemos ver que el retraso más significativo ocurrió el 8 de marzo de 2013, pero que el mes con más retrasos fue Julio
flights_mean <- flights%>%
group_by(day, year, month) %>%
summarise( mean_retraso = mean(arr_delay, na.rm = TRUE))%>%
arrange(desc(mean_retraso))
## `summarise()` has grouped output by 'day', 'year'. You can override using the `.groups` argument.
flights_mean
## # A tibble: 365 x 4
## # Groups: day, year [31]
## day year month mean_retraso
## <int> <int> <int> <dbl>
## 1 8 2013 3 85.9
## 2 13 2013 6 63.8
## 3 22 2013 7 62.8
## 4 23 2013 5 62.0
## 5 10 2013 7 59.6
## 6 12 2013 9 58.9
## 7 1 2013 7 58.3
## 8 17 2013 12 55.9
## 9 8 2013 8 55.5
## 10 5 2013 12 51.7
## # … with 355 more rows
17 Obtén el número de vuelos por aerlorínea y destin. Identifica aerolínea y destino con mayor número de vuelos ordenando el resultado anterior de forma descendente
En este data set podemos observar que Delta con destino Atlanta fue el vuelo más realizado, pues cuenta con 10571 vuelos.
flights %>%
group_by(carrier,dest) %>%
summarize(count = n()) %>%
arrange(desc(count))
## `summarise()` has grouped output by 'carrier'. You can override using the `.groups` argument.
## # A tibble: 314 x 3
## # Groups: carrier [16]
## carrier dest count
## <chr> <chr> <int>
## 1 DL ATL 10571
## 2 US CLT 8632
## 3 AA DFW 7257
## 4 AA MIA 7234
## 5 UA ORD 6984
## 6 UA IAH 6924
## 7 UA SFO 6819
## 8 B6 FLL 6563
## 9 B6 MCO 6472
## 10 AA ORD 6059
## # … with 304 more rows
18 Obtén la máxima distancia recorrida por aerolínea y destino, ordena en forma descendente por máxima distancia recorrida
Aquí podemos observar que los destinos más alejados fueron Honolulu, San Francisco y Anchorage. El vuelo más largo (en términos de distancia), fue relizado a Honolulu por Hawaian airlines y el segundo coincide en destino, pero fue realizado por United Airlines.
distancias_maximas <- flights %>%
group_by(carrier,dest) %>%
summarise(maxima_dist= max (distance)) %>%
arrange (desc(maxima_dist))
## `summarise()` has grouped output by 'carrier'. You can override using the `.groups` argument.
head(distancias_maximas)
## # A tibble: 6 x 3
## # Groups: carrier [5]
## carrier dest maxima_dist
## <chr> <chr> <dbl>
## 1 HA HNL 4983
## 2 UA HNL 4963
## 3 UA ANC 3370
## 4 AA SFO 2586
## 5 B6 SFO 2586
## 6 DL SFO 2586
19 Obtén el tiempo de vuelo por aerolínea y destino, ordena en forma descendente por la suma_tiempo_vuelo e identifica las 3 aerolíneas con sus destinos que han volado más tiempo
Aquí podemos ver que las aereolíneas que han volado más tiempo son Hawaiian Airlines, JetBlue y ENDEAVOR en ese orden.
sum_vuelos <- flights %>%
group_by(carrier,dest) %>%
summarise(suma_tiempo_vuelo = sum(air_time)) %>%
arrange(desc(suma_tiempo_vuelo))
## `summarise()` has grouped output by 'carrier'. You can override using the `.groups` argument.
sum_vuelos[1:3,]
## # A tibble: 3 x 3
## # Groups: carrier [3]
## carrier dest suma_tiempo_vuelo
## <chr> <chr> <dbl>
## 1 HA HNL 213096
## 2 B6 ABQ 63289
## 3 9E RSW 10764
20 En la consulta 18 renombra el campo max_distancia por distancia_máxima_recorrida
distancias_maximas%>%
rename( maxima_distancia_recorrida = maxima_dist)
## # A tibble: 314 x 3
## # Groups: carrier [16]
## carrier dest maxima_distancia_recorrida
## <chr> <chr> <dbl>
## 1 HA HNL 4983
## 2 UA HNL 4963
## 3 UA ANC 3370
## 4 AA SFO 2586
## 5 B6 SFO 2586
## 6 DL SFO 2586
## 7 UA SFO 2586
## 8 VX SFO 2586
## 9 B6 OAK 2576
## 10 B6 SJC 2569
## # … with 304 more rows
En general podemos concluir que…
Es más común que las llegadas no sucedan cuando están previstas y el timepo de su retraso, dependerá exponencialmente del tiempo en el aire y por consiguiente de la velocidad que se mantenga en el aire.
El vuelo más largo y con mayor distancia es a Honolulu, pero muchas aerolíneas no cuentan con este destino
Precisamente por esta gran distancia es que Hawaian Airlines es la aerolínea que pasa más tiempo en el aire
UA, AA y DLT, son 3 aerolíneas muy conocidas,sin embargo, ninguna de ellas aparece en el ranking de más vuelos a un destino. Esto es bueno porque nos indica que no se limitan solo a un lugar, pero tambíen es mal… porque no hay una especialización ni asociación a la marca, como pasa con Hawaian airlines e ir a Honolulu o Air France y Paris (en vuelos internacionales)
Julio es el mes con más retrasos y esto posiblemente se debe a que es verano y temporada alta, pues los meses que aprecen en ese ranking (día, mes, año con más retrasos) también suelen caracterizarse por vacaciones y viajes