El paquete nycflights13 contiene información sobre todos los vuelos que partieron desde Nueva York (EWR, JFK y LGA) a destinos en los Estados Unidos en 2013. Fueron 336,776 vuelos en total. Para ayudar a comprender las causas de los retrasos, también incluye otros conjuntos de datos útiles.
Este paquete incluye las siguientes tablas:
Fuente:
Origen
de los datos
library(nycflights13)
flights <- flights
weather <- weather
planes <- planes
airports <- airports
airlines <- airlines
En este segmento pudimos utilizar las funciones más comúnes del análisis exploratorio, el cuál es el primer paso para cualquier trabajo de manipulación de datos.
str(flights)
## tibble [336,776 × 19] (S3: tbl_df/tbl/data.frame)
## $ year : int [1:336776] 2013 2013 2013 2013 2013 2013 2013 2013 2013 2013 ...
## $ month : int [1:336776] 1 1 1 1 1 1 1 1 1 1 ...
## $ day : int [1:336776] 1 1 1 1 1 1 1 1 1 1 ...
## $ dep_time : int [1:336776] 517 533 542 544 554 554 555 557 557 558 ...
## $ sched_dep_time: int [1:336776] 515 529 540 545 600 558 600 600 600 600 ...
## $ dep_delay : num [1:336776] 2 4 2 -1 -6 -4 -5 -3 -3 -2 ...
## $ arr_time : int [1:336776] 830 850 923 1004 812 740 913 709 838 753 ...
## $ sched_arr_time: int [1:336776] 819 830 850 1022 837 728 854 723 846 745 ...
## $ arr_delay : num [1:336776] 11 20 33 -18 -25 12 19 -14 -8 8 ...
## $ carrier : chr [1:336776] "UA" "UA" "AA" "B6" ...
## $ flight : int [1:336776] 1545 1714 1141 725 461 1696 507 5708 79 301 ...
## $ tailnum : chr [1:336776] "N14228" "N24211" "N619AA" "N804JB" ...
## $ origin : chr [1:336776] "EWR" "LGA" "JFK" "JFK" ...
## $ dest : chr [1:336776] "IAH" "IAH" "MIA" "BQN" ...
## $ air_time : num [1:336776] 227 227 160 183 116 150 158 53 140 138 ...
## $ distance : num [1:336776] 1400 1416 1089 1576 762 ...
## $ hour : num [1:336776] 5 5 5 5 6 5 6 6 6 6 ...
## $ minute : num [1:336776] 15 29 40 45 0 58 0 0 0 0 ...
## $ time_hour : POSIXct[1:336776], format: "2013-01-01 05:00:00" "2013-01-01 05:00:00" ...
En los datos del df Flights podemos observar datos de tipo:
int = números enteros
num = números con decimales y negativos
chr = datos alfabéticos
POSIXct = formato de fecha hora (YYYY-MM-DD HH:mm:ss)
Otros tipos de datos no incluidos en la tabla pueden ser:
dbl = dobles, o números reales
dttm = fechas y horas (una fecha + una hora)
# La carga a memoria se hizo en el paso anterior
flights
## # A tibble: 336,776 × 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
## # ℹ 336,766 more rows
## # ℹ 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>
str(flights)
## tibble [336,776 × 19] (S3: tbl_df/tbl/data.frame)
## $ year : int [1:336776] 2013 2013 2013 2013 2013 2013 2013 2013 2013 2013 ...
## $ month : int [1:336776] 1 1 1 1 1 1 1 1 1 1 ...
## $ day : int [1:336776] 1 1 1 1 1 1 1 1 1 1 ...
## $ dep_time : int [1:336776] 517 533 542 544 554 554 555 557 557 558 ...
## $ sched_dep_time: int [1:336776] 515 529 540 545 600 558 600 600 600 600 ...
## $ dep_delay : num [1:336776] 2 4 2 -1 -6 -4 -5 -3 -3 -2 ...
## $ arr_time : int [1:336776] 830 850 923 1004 812 740 913 709 838 753 ...
## $ sched_arr_time: int [1:336776] 819 830 850 1022 837 728 854 723 846 745 ...
## $ arr_delay : num [1:336776] 11 20 33 -18 -25 12 19 -14 -8 8 ...
## $ carrier : chr [1:336776] "UA" "UA" "AA" "B6" ...
## $ flight : int [1:336776] 1545 1714 1141 725 461 1696 507 5708 79 301 ...
## $ tailnum : chr [1:336776] "N14228" "N24211" "N619AA" "N804JB" ...
## $ origin : chr [1:336776] "EWR" "LGA" "JFK" "JFK" ...
## $ dest : chr [1:336776] "IAH" "IAH" "MIA" "BQN" ...
## $ air_time : num [1:336776] 227 227 160 183 116 150 158 53 140 138 ...
## $ distance : num [1:336776] 1400 1416 1089 1576 762 ...
## $ hour : num [1:336776] 5 5 5 5 6 5 6 6 6 6 ...
## $ minute : num [1:336776] 15 29 40 45 0 58 0 0 0 0 ...
## $ time_hour : POSIXct[1:336776], format: "2013-01-01 05:00:00" "2013-01-01 05:00:00" ...
#POSIXct: Formato fecha y hora
#Date:fecha(En R es Año, Mes y Día)
class(flights)
## [1] "tbl_df" "tbl" "data.frame"
Es un dataframe, contiene variables ordenadas en diferentes columnas y renglones.
ncol(flights)
## [1] 19
nrow(flights)
## [1] 336776
dim(flights)
## [1] 336776 19
view(flights)
head(flights)
## # A tibble: 6 × 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
## # ℹ 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>
tail(flights)
## # A tibble: 6 × 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 9 30 NA 1842 NA NA 2019
## 2 2013 9 30 NA 1455 NA NA 1634
## 3 2013 9 30 NA 2200 NA NA 2312
## 4 2013 9 30 NA 1210 NA NA 1330
## 5 2013 9 30 NA 1159 NA NA 1344
## 6 2013 9 30 NA 840 NA NA 1020
## # ℹ 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>
Se muestran los 6 primeros o 6 últimos renglones de flights
head(flights,50)
## # A tibble: 50 × 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
## # ℹ 40 more rows
## # ℹ 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>
tail(flights,20)
## # A tibble: 20 × 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 9 30 2150 2159 -9 2250 2306
## 2 2013 9 30 2159 1845 194 2344 2030
## 3 2013 9 30 2203 2205 -2 2339 2331
## 4 2013 9 30 2207 2140 27 2257 2250
## 5 2013 9 30 2211 2059 72 2339 2242
## 6 2013 9 30 2231 2245 -14 2335 2356
## 7 2013 9 30 2233 2113 80 112 30
## 8 2013 9 30 2235 2001 154 59 2249
## 9 2013 9 30 2237 2245 -8 2345 2353
## 10 2013 9 30 2240 2245 -5 2334 2351
## 11 2013 9 30 2240 2250 -10 2347 7
## 12 2013 9 30 2241 2246 -5 2345 1
## 13 2013 9 30 2307 2255 12 2359 2358
## 14 2013 9 30 2349 2359 -10 325 350
## 15 2013 9 30 NA 1842 NA NA 2019
## 16 2013 9 30 NA 1455 NA NA 1634
## 17 2013 9 30 NA 2200 NA NA 2312
## 18 2013 9 30 NA 1210 NA NA 1330
## 19 2013 9 30 NA 1159 NA NA 1344
## 20 2013 9 30 NA 840 NA NA 1020
## # ℹ 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>
Función: summary.
summary(flights)
## year month day dep_time sched_dep_time
## Min. :2013 Min. : 1.000 Min. : 1.00 Min. : 1 Min. : 106
## 1st Qu.:2013 1st Qu.: 4.000 1st Qu.: 8.00 1st Qu.: 907 1st Qu.: 906
## Median :2013 Median : 7.000 Median :16.00 Median :1401 Median :1359
## Mean :2013 Mean : 6.549 Mean :15.71 Mean :1349 Mean :1344
## 3rd Qu.:2013 3rd Qu.:10.000 3rd Qu.:23.00 3rd Qu.:1744 3rd Qu.:1729
## Max. :2013 Max. :12.000 Max. :31.00 Max. :2400 Max. :2359
## NA's :8255
## dep_delay arr_time sched_arr_time arr_delay
## Min. : -43.00 Min. : 1 Min. : 1 Min. : -86.000
## 1st Qu.: -5.00 1st Qu.:1104 1st Qu.:1124 1st Qu.: -17.000
## Median : -2.00 Median :1535 Median :1556 Median : -5.000
## Mean : 12.64 Mean :1502 Mean :1536 Mean : 6.895
## 3rd Qu.: 11.00 3rd Qu.:1940 3rd Qu.:1945 3rd Qu.: 14.000
## Max. :1301.00 Max. :2400 Max. :2359 Max. :1272.000
## NA's :8255 NA's :8713 NA's :9430
## carrier flight tailnum origin
## Length:336776 Min. : 1 Length:336776 Length:336776
## Class :character 1st Qu.: 553 Class :character Class :character
## Mode :character Median :1496 Mode :character Mode :character
## Mean :1972
## 3rd Qu.:3465
## Max. :8500
##
## dest air_time distance hour
## Length:336776 Min. : 20.0 Min. : 17 Min. : 1.00
## Class :character 1st Qu.: 82.0 1st Qu.: 502 1st Qu.: 9.00
## Mode :character Median :129.0 Median : 872 Median :13.00
## Mean :150.7 Mean :1040 Mean :13.18
## 3rd Qu.:192.0 3rd Qu.:1389 3rd Qu.:17.00
## Max. :695.0 Max. :4983 Max. :23.00
## NA's :9430
## minute time_hour
## Min. : 0.00 Min. :2013-01-01 05:00:00.00
## 1st Qu.: 8.00 1st Qu.:2013-04-04 13:00:00.00
## Median :29.00 Median :2013-07-03 10:00:00.00
## Mean :26.23 Mean :2013-07-03 05:22:54.64
## 3rd Qu.:44.00 3rd Qu.:2013-10-01 07:00:00.00
## Max. :59.00 Max. :2013-12-31 23:00:00.00
##
Instrucciones:
Librerías requeridas: • Paquetes requeridos para la práctica: tidyverse, nyflights13 El paquete tidyverse incluye varias librerías entre ellas ggplot2, dplyr, tidyverse El paquete nyflights13 incluye varias bases de datos entre ellas flights • Librerías que deben estar instaladas: ggplot2, dplyr, tidyverse
library(nycflights13)
library(tidyverse)
library(dplyr)
data("flights")
view(flights)
summary(flights)
## year month day dep_time sched_dep_time
## Min. :2013 Min. : 1.000 Min. : 1.00 Min. : 1 Min. : 106
## 1st Qu.:2013 1st Qu.: 4.000 1st Qu.: 8.00 1st Qu.: 907 1st Qu.: 906
## Median :2013 Median : 7.000 Median :16.00 Median :1401 Median :1359
## Mean :2013 Mean : 6.549 Mean :15.71 Mean :1349 Mean :1344
## 3rd Qu.:2013 3rd Qu.:10.000 3rd Qu.:23.00 3rd Qu.:1744 3rd Qu.:1729
## Max. :2013 Max. :12.000 Max. :31.00 Max. :2400 Max. :2359
## NA's :8255
## dep_delay arr_time sched_arr_time arr_delay
## Min. : -43.00 Min. : 1 Min. : 1 Min. : -86.000
## 1st Qu.: -5.00 1st Qu.:1104 1st Qu.:1124 1st Qu.: -17.000
## Median : -2.00 Median :1535 Median :1556 Median : -5.000
## Mean : 12.64 Mean :1502 Mean :1536 Mean : 6.895
## 3rd Qu.: 11.00 3rd Qu.:1940 3rd Qu.:1945 3rd Qu.: 14.000
## Max. :1301.00 Max. :2400 Max. :2359 Max. :1272.000
## NA's :8255 NA's :8713 NA's :9430
## carrier flight tailnum origin
## Length:336776 Min. : 1 Length:336776 Length:336776
## Class :character 1st Qu.: 553 Class :character Class :character
## Mode :character Median :1496 Mode :character Mode :character
## Mean :1972
## 3rd Qu.:3465
## Max. :8500
##
## dest air_time distance hour
## Length:336776 Min. : 20.0 Min. : 17 Min. : 1.00
## Class :character 1st Qu.: 82.0 1st Qu.: 502 1st Qu.: 9.00
## Mode :character Median :129.0 Median : 872 Median :13.00
## Mean :150.7 Mean :1040 Mean :13.18
## 3rd Qu.:192.0 3rd Qu.:1389 3rd Qu.:17.00
## Max. :695.0 Max. :4983 Max. :23.00
## NA's :9430
## minute time_hour
## Min. : 0.00 Min. :2013-01-01 05:00:00.00
## 1st Qu.: 8.00 1st Qu.:2013-04-04 13:00:00.00
## Median :29.00 Median :2013-07-03 10:00:00.00
## Mean :26.23 Mean :2013-07-03 05:22:54.64
## 3rd Qu.:44.00 3rd Qu.:2013-10-01 07:00:00.00
## Max. :59.00 Max. :2013-12-31 23:00:00.00
##
#selecciona las variables carrier, distance, origin, dest de la tabla
res01 <- select(flights, carrier, distance, origin, dest)
#se filtra las aerolineas con millas recorridas superiores a la media - 1040
res02 <- filter(res01, distance >1040)
#ordena en forma descendente por distancia recorrida
res03 <- arrange(res02, desc(distance))
res03
## # A tibble: 127,665 × 4
## carrier distance origin dest
## <chr> <dbl> <chr> <chr>
## 1 HA 4983 JFK HNL
## 2 HA 4983 JFK HNL
## 3 HA 4983 JFK HNL
## 4 HA 4983 JFK HNL
## 5 HA 4983 JFK HNL
## 6 HA 4983 JFK HNL
## 7 HA 4983 JFK HNL
## 8 HA 4983 JFK HNL
## 9 HA 4983 JFK HNL
## 10 HA 4983 JFK HNL
## # ℹ 127,655 more rows
Esta tabla muestra los mayores vuelos por distancia, por vuelo, este es el vuelo más largo del aeropuerto JFK a HNL (Nueva York a Honolulú).
Pero si en realidad queremos saber las aerolíneas con más millas recorridas, mostramos la siguiente tabla pero sin la posibilidad de mostrar las columnas origin y dest.
res01 <- select(flights, carrier, distance, origin, dest)
# Se filtra las aerolíneas con millas recorridas superiores a la media - 1040
res02 <- filter(res01, distance > 1040)
# Agrupa por carrier
res031 <- group_by(res02, carrier)
# Opcionalmente, si deseas sumarizar la distancia total por aerolínea podrías añadir:
res031_summary <- summarise(res031, total_distance = sum(distance))
# Visualiza el resultado
res031_summary <- res031_summary %>% arrange(desc(total_distance))
res031_summary
## # A tibble: 13 × 2
## carrier total_distance
## <chr> <dbl>
## 1 UA 76256278
## 2 B6 40261280
## 3 DL 38759882
## 4 AA 37261176
## 5 VX 12902327
## 6 WN 5963462
## 7 US 4866023
## 8 EV 4574275
## 9 AS 1715028
## 10 HA 1704186
## 11 9E 1686158
## 12 F9 1109700
## 13 MQ 853368
Obtenemos el dato que UA (United Airlines) es la aerolínea con la mayor distancia recorrida en total.
res04 <- res031 %>% group_by(carrier) %>%
summarize(sumdistance=sum(distance, na.rm=TRUE), meandistance=mean(distance, na.rm=TRUE))
res04 %>% arrange(desc(sumdistance))
## # A tibble: 13 × 3
## carrier sumdistance meandistance
## <chr> <dbl> <dbl>
## 1 UA 76256278 1941.
## 2 B6 40261280 1648.
## 3 DL 38759882 1791.
## 4 AA 37261176 1607.
## 5 VX 12902327 2499.
## 6 WN 5963462 1556.
## 7 US 4866023 2143.
## 8 EV 4574275 1146.
## 9 AS 1715028 2402
## 10 HA 1704186 4983
## 11 9E 1686158 1225.
## 12 F9 1109700 1620
## 13 MQ 853368 1147
En esta tabla obtenemos sumdistance que representa la suma de las distancias recorridas por aerolínea en vuelos que salen de Nueva York, para meandistance obtenemos el promedio de distancia por aerolínea.
Ordenamos la suma de distancias y obtenemos el mismo dato que la tabla anterior, UA es la aerolínea con más distancia recorrida.
res051 <- res03 %>% group_by(carrier) %>%
summarize(sumdistance=sum(distance, na.rm=TRUE), meandistance=mean(distance, na.rm=TRUE))
res051 %>% arrange(desc(meandistance))
## # A tibble: 13 × 3
## carrier sumdistance meandistance
## <chr> <dbl> <dbl>
## 1 HA 1704186 4983
## 2 VX 12902327 2499.
## 3 AS 1715028 2402
## 4 US 4866023 2143.
## 5 UA 76256278 1941.
## 6 DL 38759882 1791.
## 7 B6 40261280 1648.
## 8 F9 1109700 1620
## 9 AA 37261176 1607.
## 10 WN 5963462 1556.
## 11 9E 1686158 1225.
## 12 MQ 853368 1147
## 13 EV 4574275 1146.
Ordenando de manera descendiente por el promedio de distancia recorrida, obtenemos que HA (Hawaian Airlines) es la aerolínea con el promedio más grande de distancia recorrida por viaje, esto debido a que sus vuelos llevan a Honolulú, el vuelo más largo realizado desde los aeropuertos en Nueva York. La distancia promedio de un vuelo de HA fue de 4983 millas.
A pesar de tener los vuelos más largos, no contienen la mayor distancia recorrida en total.
res041 <- res031 %>% group_by(carrier) %>%
summarize(sumdistance=sum(distance, na.rm=TRUE), meandistance=mean(distance, na.rm=TRUE))
res041 %>% arrange(desc(sumdistance))
## # A tibble: 13 × 3
## carrier sumdistance meandistance
## <chr> <dbl> <dbl>
## 1 UA 76256278 1941.
## 2 B6 40261280 1648.
## 3 DL 38759882 1791.
## 4 AA 37261176 1607.
## 5 VX 12902327 2499.
## 6 WN 5963462 1556.
## 7 US 4866023 2143.
## 8 EV 4574275 1146.
## 9 AS 1715028 2402
## 10 HA 1704186 4983
## 11 9E 1686158 1225.
## 12 F9 1109700 1620
## 13 MQ 853368 1147
Genera un data frame para cada aeropuerto. Funciones: filter(), arrange()
res04 <- res03 %>% group_by(carrier,origin,dest) %>%
summarize(sumdistance=sum(distance, na.rm=TRUE), meandistance=mean(distance, na.rm=TRUE))
## `summarise()` has grouped output by 'carrier', 'origin'. You can override using
## the `.groups` argument.
res05 <- arrange(res04,carrier,sumdistance)
JFK = res05 %>%
filter(origin == "JFK") %>%
arrange(carrier, desc(sumdistance))
LGA = res05 %>%
filter(origin == "LGA") %>%
arrange(carrier, desc(sumdistance))
EWR = res05 %>%
filter(origin == "EWR") %>%
arrange(carrier, desc(sumdistance))
Ahora obtenemos la suma de las distancias obtenidas y las ordenamos de manera descendiente para cada aeropuerto.
JFK_grouped <- JFK %>%
group_by(carrier) %>%
summarise(total_sumdistance = sum(sumdistance)) %>%
arrange(desc(total_sumdistance))
JFK_grouped
## # A tibble: 8 × 2
## carrier total_sumdistance
## <chr> <dbl>
## 1 B6 34655295
## 2 DL 31056240
## 3 AA 21347674
## 4 UA 11496375
## 5 VX 8972450
## 6 US 2366147
## 7 HA 1704186
## 8 9E 1417408
LGA_grouped <- LGA %>%
group_by(carrier) %>%
summarise(total_sumdistance = sum(sumdistance)) %>%
arrange(desc(total_sumdistance))
LGA_grouped
## # A tibble: 9 × 2
## carrier total_sumdistance
## <chr> <dbl>
## 1 AA 11040924
## 2 DL 7006616
## 3 UA 6812736
## 4 B6 3130643
## 5 WN 1765200
## 6 F9 1109700
## 7 MQ 853368
## 8 EV 384263
## 9 9E 268750
EWR_grouped <- EWR %>%
group_by(carrier) %>%
summarise(total_sumdistance = sum(sumdistance)) %>%
arrange(desc(total_sumdistance))
EWR_grouped
## # A tibble: 9 × 2
## carrier total_sumdistance
## <chr> <dbl>
## 1 UA 57947167
## 2 AA 4872578
## 3 WN 4198262
## 4 EV 4190012
## 5 VX 3929877
## 6 US 2499876
## 7 B6 2475342
## 8 AS 1715028
## 9 DL 697026
Obteniendo las aerolíneas con mayor distancia recorrida separadas por los aeropuertos de Nueva York, nos damos cuenta que sólo en el aeropuerto EWR la aerolínea United Airlines sigue siendo líder en distancia total, mientras qué en LGA es American Airlines y en JFK es JetBlue.
bdgrande <- merge(flights,airlines, by="carrier")
bdgrande2 <- left_join(bdgrande, planes, by="tailnum")
bdgrande3 <- left_join(bdgrande2,weather, by=c("origin", "time_hour"))
bdgrande3 <- mutate(bdgrande3, dist_Km = distance*1.609)
bdevidencia <- left_join(bdgrande3,weather, by=c("origin", "time_hour"))
# Calcula el promedio de arr_delay para los retrasos mayores a 20 en toda la base de datos
promedio_retraso2 <- bdevidencia %>%
filter(arr_delay > 20) %>% # Filtra registros donde arr_delay es mayor a 20
summarise(promedio_arr_delay = mean(arr_delay)) # Calcula el promedio de arr_delay
promedio_retraso2
## promedio_arr_delay
## 1 71.50971
Observamos que el tiempo promedio de retrasos son 71 minutos, lo cual resulta una cifra bastante grande considerando que cada vuelo atrasado tomaría más de una hora en arrivar en su destino.
conteo4 <- bdevidencia %>%
filter(arr_delay > 20) %>% # Filtra registros donde arr_delay es mayor a 20
group_by(dest) %>% # Agrupa por la columna dest
summarise(conteo4 = n()) %>% # Cuenta el número de registros en cada grupo
arrange(desc(conteo4)) # Ordena de manera descendiente
conteo4
## # A tibble: 102 × 2
## dest conteo4
## <chr> <int>
## 1 ATL 3558
## 2 ORD 3389
## 3 LAX 2701
## 4 CLT 2676
## 5 FLL 2656
## 6 MCO 2574
## 7 SFO 2488
## 8 BOS 2402
## 9 DCA 1939
## 10 MIA 1767
## # ℹ 92 more rows
Vemos que Atlanta resulta ser el destino con mayores retrasos de llegada, aunque sabemos que también es uno de los destinos más cotizados, por lo que habría que revisar qué aeropuerto cuenta con el mayor porcentaje de retrasos.
conteo1 <- bdevidencia %>%
filter(arr_delay > 20) %>% # Filtra registros donde arr_delay es mayor a 20
group_by(dest) %>% # Agrupa por la columna dest
summarise(retrasos = n()) # Cuenta el número de retrasos en cada grupo
# Asumiendo que `total` es el número total de vuelos para cada destino
total <- bdevidencia %>%
group_by(dest) %>%
summarise(total_vuelos = n())
# Calcula el porcentaje de retraso
porcentaje_retraso <- left_join(conteo1, total, by = "dest") %>%
mutate(porcentaje = (retrasos / total_vuelos) * 100) %>%
select(dest, porcentaje) %>%
arrange(desc(porcentaje)) # Ordena los resultados por porcentaje de mayor a menor
porcentaje_retraso
## # A tibble: 102 × 2
## dest porcentaje
## <chr> <dbl>
## 1 CAE 53.4
## 2 OKC 41.9
## 3 TUL 41.6
## 4 JAC 32
## 5 TYS 31.7
## 6 SMF 31.7
## 7 CRW 31.2
## 8 RIC 30.2
## 9 MSN 29.9
## 10 PVD 29.5
## # ℹ 92 more rows
El “Columbia Metropolitan Airport” tiene el mayor porcentaje de llegadas tardías con un 53%. Atlanta resulta no estar ni en los primeros diez aeropuertos con más porcentaje de retrasos.
promedio_retraso <- bdevidencia %>%
filter(arr_delay > 20) %>% # Filtra registros donde arr_delay es mayor a 20
group_by(dest) %>% # Agrupa por la columna dest
summarise(promedio_arr_delay = mean(arr_delay)) %>% # Calcula el promedio de arr_delay en cada grupo
arrange(desc(promedio_arr_delay)) # Ordena los resultados por promedio de mayor a menor
print(promedio_retraso)
## # A tibble: 102 × 2
## dest promedio_arr_delay
## <chr> <dbl>
## 1 TVC 89.4
## 2 TYS 87.0
## 3 BHM 84.7
## 4 TUL 84.4
## 5 DSM 84.3
## 6 CAK 83.6
## 7 SAT 82.6
## 8 IAD 82.3
## 9 BWI 82.2
## 10 MSN 81.9
## # ℹ 92 more rows
Encontramos que el aeropuerto con la mayor cantidad de minutos promedio de retraso de llegada es Traverse City, Michigan, esto puede deberse a la gestión (o falta de gestión) del aeropuerto destino.
También sospechamos que algunos retrasos de vuelos pueden ser a causa de los vientos fuertes. Para esto, preparamos una fórmula para encontrar su relación.
primera_razon <- bdevidencia %>% filter(arr_delay>=20 & wind_speed.x>=20)
count(primera_razon)
## n
## 1 5442
(5442/336776)*100
## [1] 1.615911
Con esto, entendemos que el viento no es un factor clave en el retraso de los vuelos. También existe la posibilidad que los aeropuertos no permitan el despegue cuando hay vientos fuertes y que esto afecte nuestros datos.
total_retrasos_20 <- bdevidencia %>%
filter(arr_delay > 20) %>%
nrow()
# Vuelos con arr_delay de más de 20 minutos Y humid.x mayor a 20
retrasos_humid_20 <- bdevidencia %>%
filter(arr_delay > 20 & humid.x > 20) %>%
nrow()
# Calcular el porcentaje
porcentaje <- (retrasos_humid_20 / total_retrasos_20) * 100
# Mostrar el resultado
porcentaje
## [1] 98.67032
La humedad o posible lluvia afecta en la llegada de los vuelos y tiene grandes implicaciones en los retrasos. Una de las posibles causas pueden ser los cambios de ruta debido a las lluvias o al funcionamiento de los motores y la aerodinámica del avión en circunstancias de humedad o lluvia.
En la primera parte de nuestra investigación encontramos qué el tiempo promedio de retraso en los vuelos que salen de Nueva York es de 71 minutos, comprendemos que este es un gran problema para quienes acuden a los aeropuertos de la ciudad, por esto investigamos las causas más importantes que ocasionan estos retrasos en los vuelos.
Atlanta resultó ser el aeropuerto destino con más vuelos atrasados, aunque esto se debe a que es uno de los destinos más buscados y por eso obtiene este número.
A pesar de saber que Atlanta es el destino con más retrasos, encontramos que el “Columbia Metropolitan Airport” es el destino con mayor porcentaje de retrasos siendo el 53% de las veces.
El destino con mayor tiemmpo promedio de retraso es el de Traverse City, Michigan con 89 minutos promedio de retraso.
Investigamos las causas climáticas empezando por la velocidad del viento y no encontramos ninguna relación significativa.
Por último investigamos la humedad durante los vuelos y encontramos qué el 98 por ciento de los retrasos tenían alta húmedad, esto significa que la húmedad o lluvias juegan el papel más importante en los retrasos de los vuelos que despegan en la ciudad de “Nueva York”.
Se nos ha solicitado hacer un estudio sobre la situación actual de la aerolínea “American Airlines” ya que se necesita revisar sus destinos, horarios, y aviones con los que cuenta para hacer propuestas de aumento o reducción de vuelos por destino y horarios, así como la cantidad de aviones.
view(planes)
view(weather)
planes
## # A tibble: 3,322 × 9
## tailnum year type manufacturer model engines seats speed engine
## <chr> <int> <chr> <chr> <chr> <int> <int> <int> <chr>
## 1 N10156 2004 Fixed wing multi… EMBRAER EMB-… 2 55 NA Turbo…
## 2 N102UW 1998 Fixed wing multi… AIRBUS INDU… A320… 2 182 NA Turbo…
## 3 N103US 1999 Fixed wing multi… AIRBUS INDU… A320… 2 182 NA Turbo…
## 4 N104UW 1999 Fixed wing multi… AIRBUS INDU… A320… 2 182 NA Turbo…
## 5 N10575 2002 Fixed wing multi… EMBRAER EMB-… 2 55 NA Turbo…
## 6 N105UW 1999 Fixed wing multi… AIRBUS INDU… A320… 2 182 NA Turbo…
## 7 N107US 1999 Fixed wing multi… AIRBUS INDU… A320… 2 182 NA Turbo…
## 8 N108UW 1999 Fixed wing multi… AIRBUS INDU… A320… 2 182 NA Turbo…
## 9 N109UW 1999 Fixed wing multi… AIRBUS INDU… A320… 2 182 NA Turbo…
## 10 N110UW 1999 Fixed wing multi… AIRBUS INDU… A320… 2 182 NA Turbo…
## # ℹ 3,312 more rows
weather
## # A tibble: 26,115 × 15
## origin year month day hour temp dewp humid wind_dir wind_speed
## <chr> <int> <int> <int> <int> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 EWR 2013 1 1 1 39.0 26.1 59.4 270 10.4
## 2 EWR 2013 1 1 2 39.0 27.0 61.6 250 8.06
## 3 EWR 2013 1 1 3 39.0 28.0 64.4 240 11.5
## 4 EWR 2013 1 1 4 39.9 28.0 62.2 250 12.7
## 5 EWR 2013 1 1 5 39.0 28.0 64.4 260 12.7
## 6 EWR 2013 1 1 6 37.9 28.0 67.2 240 11.5
## 7 EWR 2013 1 1 7 39.0 28.0 64.4 240 15.0
## 8 EWR 2013 1 1 8 39.9 28.0 62.2 250 10.4
## 9 EWR 2013 1 1 9 39.9 28.0 62.2 260 15.0
## 10 EWR 2013 1 1 10 41 28.0 59.6 260 13.8
## # ℹ 26,105 more rows
## # ℹ 5 more variables: wind_gust <dbl>, precip <dbl>, pressure <dbl>,
## # visib <dbl>, time_hour <dttm>
aerolineas <- flights %>%
select(carrier,origin,dest)
aerolineas
## # A tibble: 336,776 × 3
## carrier origin dest
## <chr> <chr> <chr>
## 1 UA EWR IAH
## 2 UA LGA IAH
## 3 AA JFK MIA
## 4 B6 JFK BQN
## 5 DL LGA ATL
## 6 UA EWR ORD
## 7 B6 EWR FLL
## 8 EV LGA IAD
## 9 B6 JFK MCO
## 10 AA LGA ORD
## # ℹ 336,766 more rows
aerolineas_nombre <- aerolineas %>%
left_join(airlines, by = "carrier")
aerolineas_nombre
## # A tibble: 336,776 × 4
## carrier origin dest name
## <chr> <chr> <chr> <chr>
## 1 UA EWR IAH United Air Lines Inc.
## 2 UA LGA IAH United Air Lines Inc.
## 3 AA JFK MIA American Airlines Inc.
## 4 B6 JFK BQN JetBlue Airways
## 5 DL LGA ATL Delta Air Lines Inc.
## 6 UA EWR ORD United Air Lines Inc.
## 7 B6 EWR FLL JetBlue Airways
## 8 EV LGA IAD ExpressJet Airlines Inc.
## 9 B6 JFK MCO JetBlue Airways
## 10 AA LGA ORD American Airlines Inc.
## # ℹ 336,766 more rows
cant_vuelos <- flights %>%
select(carrier, dest) %>%
count(dest)
cant_vuelos <- cant_vuelos %>%
arrange(desc(n))
cant_vuelos
## # A tibble: 105 × 2
## dest n
## <chr> <int>
## 1 ORD 17283
## 2 ATL 17215
## 3 LAX 16174
## 4 BOS 15508
## 5 MCO 14082
## 6 CLT 14064
## 7 SFO 13331
## 8 FLL 12055
## 9 MIA 11728
## 10 DCA 9705
## # ℹ 95 more rows
Los destinos más buscados con origen en Nueva York en 2013 son Chicago con 17,283 vuelos, Atlanta con 17,215 vuelos y Los Angeles con 16,174 vuelos.
cant_vuelos1 <- flights %>%
select(carrier, dest) %>%
group_by(carrier, dest) %>%
summarise(n = n()) %>%
ungroup() %>%
arrange(desc(n))
## `summarise()` has grouped output by 'carrier'. You can override using the
## `.groups` argument.
cant_vuelos1
## # A tibble: 314 × 3
## carrier dest n
## <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
## # ℹ 304 more rows
Esta tabla ahora nos muestra las aerolíneas y destinos con mayor cantidad de vuelos. La aerolínea “Delta Airlines” tuvo la mayor cantidad de vuelos hacia Atlanta.
###6 . Se necesita conocer las aerolíneas (clave y nombre) y destinos que vuelan de: 6 a 12, 12 a 19 , 19 a 24, y 24 a 6.
carrier_horario <- flights %>%
select(carrier, dest, sched_dep_time) %>%
left_join(airlines, by = "carrier")
clasxhora<- mutate(carrier_horario, clas_horario = ifelse(sched_dep_time %in% 600:1159,"Mañana",
ifelse(sched_dep_time %in% 1200:1859,"Tarde",
ifelse(sched_dep_time %in% 1900:2400,"Noche", "Madrugada"))))
clasxhora
## # A tibble: 336,776 × 5
## carrier dest sched_dep_time name clas_horario
## <chr> <chr> <int> <chr> <chr>
## 1 UA IAH 515 United Air Lines Inc. Madrugada
## 2 UA IAH 529 United Air Lines Inc. Madrugada
## 3 AA MIA 540 American Airlines Inc. Madrugada
## 4 B6 BQN 545 JetBlue Airways Madrugada
## 5 DL ATL 600 Delta Air Lines Inc. Mañana
## 6 UA ORD 558 United Air Lines Inc. Madrugada
## 7 B6 FLL 600 JetBlue Airways Mañana
## 8 EV IAD 600 ExpressJet Airlines Inc. Mañana
## 9 B6 MCO 600 JetBlue Airways Mañana
## 10 AA ORD 600 American Airlines Inc. Mañana
## # ℹ 336,766 more rows
cant_clasxhora <- clasxhora %>%
group_by(carrier, dest,clas_horario) %>% count()
cant_clasxhora
## # A tibble: 741 × 4
## # Groups: carrier, dest, clas_horario [741]
## carrier dest clas_horario n
## <chr> <chr> <chr> <int>
## 1 9E ATL Mañana 59
## 2 9E AUS Tarde 2
## 3 9E AVL Mañana 10
## 4 9E BGR Noche 1
## 5 9E BNA Mañana 6
## 6 9E BNA Noche 1
## 7 9E BNA Tarde 467
## 8 9E BOS Mañana 271
## 9 9E BOS Noche 94
## 10 9E BOS Tarde 549
## # ℹ 731 more rows
destinos_aa <- clasxhora %>%
select(carrier,name, dest,clas_horario) %>%
filter(carrier == "AA" & clas_horario == "Madrugada") %>%
group_by(carrier,name, dest,clas_horario)
destinos_aa
## # A tibble: 365 × 4
## # Groups: carrier, name, dest, clas_horario [1]
## carrier name dest clas_horario
## <chr> <chr> <chr> <chr>
## 1 AA American Airlines Inc. MIA Madrugada
## 2 AA American Airlines Inc. MIA Madrugada
## 3 AA American Airlines Inc. MIA Madrugada
## 4 AA American Airlines Inc. MIA Madrugada
## 5 AA American Airlines Inc. MIA Madrugada
## 6 AA American Airlines Inc. MIA Madrugada
## 7 AA American Airlines Inc. MIA Madrugada
## 8 AA American Airlines Inc. MIA Madrugada
## 9 AA American Airlines Inc. MIA Madrugada
## 10 AA American Airlines Inc. MIA Madrugada
## # ℹ 355 more rows
Encontramos que el único destino de American Airlines por la madrugada es hacia Miami.
avion_aa <- flights %>%
left_join(planes, by = "tailnum") %>%
select(carrier, type, engine, seats) %>%
filter(carrier == "AA", !is.na(type)) %>%
group_by(carrier,type,engine,seats) %>%
count()
avion_aa
## # A tibble: 22 × 5
## # Groups: carrier, type, engine, seats [22]
## carrier type engine seats n
## <chr> <chr> <chr> <int> <int>
## 1 AA Fixed wing multi engine Reciprocating 6 22
## 2 AA Fixed wing multi engine Reciprocating 8 92
## 3 AA Fixed wing multi engine Reciprocating 102 22
## 4 AA Fixed wing multi engine Turbo-fan 8 38
## 5 AA Fixed wing multi engine Turbo-fan 11 19
## 6 AA Fixed wing multi engine Turbo-fan 22 13
## 7 AA Fixed wing multi engine Turbo-fan 172 3857
## 8 AA Fixed wing multi engine Turbo-fan 178 501
## 9 AA Fixed wing multi engine Turbo-fan 255 4257
## 10 AA Fixed wing multi engine Turbo-fan 330 450
## # ℹ 12 more rows
El tipo de avión que American Airlines usa más veces es el “Fixed
Wing Multi Engine”, utilizándolo en 4257 vuelos con origen de Nueva
York. Esta aeronave contiene 255 asientos de pasajeros, sin incluir la
tripulación.
vuelostodos <- merge(flights, planes, by="tailnum")
vuelosAA <- vuelostodos %>% filter(carrier =="AA")
AA <- vuelosAA %>% select(carrier)
vuelosAAfiltrados<- vuelosAA%>% select(origin:dest)
vuelostodos <- left_join(flights, airlines, by="carrier")
Con esas tres funciones, logramos: 1. Hacer una base de datos de nada
más la fila de AA.
2. Merge todos los vuelos de la base de datos flights
con la base de datos planes
3. Filtrar esa base de datos nueva para encontrar solamente los vuelos
de AA.
4. De esos vuelos, seleccionar solamente las columnas de origen y
destino.
countoriginfeoAA <- count(vuelosAAfiltrados,origin, name="Cantidad de vuelos")
count_originAA <- arrange(countoriginfeoAA, desc("Cantidad de vuelos"))
countoriginfeos <- count(vuelostodos,origin, name="Cantidad de vuelos")
count_origin_TODOS <- arrange(countoriginfeos, desc("Cantidad de vuelos"))
countoriginfeoAA
## origin Cantidad de vuelos
## 1 EWR 1145
## 2 JFK 5500
## 3 LGA 3526
Con una función de count(), encontramos que los vuelos de “AA” consisten de 1145 vuelos saliendo de EWR, 5500 saliendo de JFK, y 3526 saliendo de LGA.
countdestfeoAA <- count(vuelosAAfiltrados,origin,dest, name ="Cantidad de vuelos")
count_destAA <- arrange(countdestfeoAA, desc("Cantidad de vuelos"))
count_destAA <- count_destAA %>%
arrange(desc("Cantidad de vuelos"))
count_destAA
## origin dest Cantidad de vuelos
## 1 EWR DFW 1084
## 2 EWR MIA 61
## 3 JFK BOS 15
## 4 JFK DFW 1
## 5 JFK EGE 25
## 6 JFK FLL 1
## 7 JFK LAS 87
## 8 JFK LAX 3178
## 9 JFK MCO 87
## 10 JFK MIA 785
## 11 JFK ORD 1
## 12 JFK SAN 30
## 13 JFK SFO 1209
## 14 JFK SJU 80
## 15 JFK STT 1
## 16 LGA DFW 528
## 17 LGA MIA 5
## 18 LGA ORD 2499
## 19 LGA STL 494
countdestfeos <- count(vuelostodos,origin,dest, name ="Cantidad de vuelos")
count_dest_TODOS <- arrange(countdestfeos,desc("Cantidad de vuelos"))
Al correr la funcion count() de arriba, encontramos los destinos de los vuelos American Airlines. El destino favorito de “AA” es Los Angeles (LAX, 3178), luego Chicago O’Hare (ORD, 2499), luego Dallas Fort Worth (DFW, 1613), etc…
Con una base de datos tan extensa como lo es “nycflights13”, podemos extraer mucha información no solo de las aerolíneas y sus aviones, sino los vuelos que hacen, la distancia, el tiempo, el tipo de avión que utilizan, etc. Con este ejercicio, logramos definir algunos hallazgos que parecen importantes para expandir nuestro conocimiento de los vuelos y aeropuertos de Nueva York, ya sea La Guardia (LGA), John F. Kennedy (JFK), o Newark Liberty (EWR).
Los vuelos que volaron más seguido fueron: JFK a LAX (11262 veces al año, 31 veces al día), LGA a ATL (10263 veces al año, 29 veces al día), y LGA a ORD (8857 veces al año, 24.6 veces al día)
Las aerolíneas con mayor distancia promedio fueron Hawaiian Airlines (4983 millas), United Airlines (2535 millas), y Virgin America (2495 millas)
Curiosamente, no aparecen vuelos que despeguen entre 1a.m y 5a.m, ya que los primeros datos del día, por así decirlo, empiezan a las 5a.m
AA utilizó 3 diferentes tipos de aviones para llevar a cabos sus traslados. Estos siendo “Fixed wing multi engine” (9318 vuelos) “Fixed wing single engine” (729) y “Rotorcraft” (124) El primero, el “Fixed wing multi engine” es el avión típico. Ya sea un Airbus, Boeing, etc. Los single engine son mucho más pequeños, pues aguantan menos carga. Finalmente, los Rotorcraft, son aquellos que parecen helicópteros
##Visualización de los Datos #Visualización de la temperatura durante los primeros 15 días de enero con una gráfica de línea:
library(ggplot2)
weather_january <- weather %>%
filter(month == 1, day <= 15, origin == "EWR")
ggplot(weather_january, aes(x = day, y = temp)) +
geom_line() +
labs(title = "Temperatura durante los primeros 15 días de enero", x = "Día", y = "Temperatura (°F)")
#Interpretación de gráfica: Con esta gráfica podemos observar la
temperatura durante los primeros días del mes de enero en el aeropuerto
de Newark (EWR), además de notar que tiene ciertas tendencias de aumento
y alteración que nos pueden estar señalando la autoridad de los sistemas
climáticos temporales. Entre sus temperaturas podemos ver que se
encuentran entre menos de 35°F y casi alcanzando 50°F, esto nos puede
indicar que es posible que estas temperaturas lleguen a perjudicar los
servicios aeroportuarios y la planeación de los vuelos a causa de el
impacto en la seguridad y operatividad de las aeronaves.
##Histograma de la temperatura más frecuente en los primeros 15 días de enero
ggplot(weather_january, aes(x = temp)) +
geom_histogram(bins = 30, fill = "blue", color = "black") +
labs(title = "Histograma de la temperatura en Enero", x = "Temperatura (°F)", y = "Frecuencia")
#Interpretación de gráfica: En este histograma observamos una clara
división en dos grupos diferentes, que nos señalan dos rangos que fueron
frecuentes, lo que nos puede mostrar variaciones en las normas
climáticas durante el mes. Esta gráfica nos ayuda a poder prevenir
alteraciones climáticas que afecten a las necesidades operativas del
aeropuerto.
##Facets para observar como varía la temperatura cada mes
weather %>%
ggplot(aes(x = temp)) +
geom_histogram(bins = 30) +
facet_wrap(~month) +
labs(title = "Distribución de la temperatura por mes", x = "Temperatura (°F)", y = "Frecuencia")
## Warning: Removed 1 row containing non-finite outside the scale range
## (`stat_bin()`).
#Interpretación de gráfica: Aquí podemos ver cómo existe un patrón
estacional referente a la temperatura en el aeropuerto de Newark, que
tiene temperaturas frías y cálidas, lo que es fundamental para la
administración y planeación relacionada con los aeropuertos en lo que
resta del año.
##Número de vuelos que salieron de Nueva York por aerolínea en 2013 con un gráfico de barras
flights %>%
filter(origin %in% c("JFK", "LGA", "EWR")) %>%
group_by(carrier) %>%
summarise(count = n()) %>%
ggplot(aes(x = reorder(carrier, -count), y = count)) +
geom_bar(stat = "identity", fill = "coral") +
labs(title = "Número de vuelos por aerolínea en 2013", x = "Aerolínea", y = "Cantidad de vuelos") +
theme(axis.text.x = element_text(angle = 90, hjust = 1))
#Interpretación de gráfica: En este gráfico podemos ver como pocas
aerolíneas son las que encabezan la cantidad de vuelos que hubo en NYC
en 2013, lo que muestra una asignación desigual del tráfico aéreo y
puede llegar a encaminar servicios aeroportuarios y a la planeación de
infraestructura.
##Gráfica de pie para el número de vuelos por aerolínea
flights %>%
group_by(carrier) %>%
summarise(count = n()) %>%
ggplot(aes(x = "", y = count, fill = carrier)) +
geom_bar(width = 1, stat = "identity") +
coord_polar("y") +
labs(title = "Distribución de vuelos por aerolínea")
#Interpretación de gráfica: En esta gráfica de pie vemos que ciertas
aerolíneas son las que lideran el mercado de vuelos en la ciudad de
Nueva York, lo que se evidencia en las secciones más grandes, mientras
que otras presentaron una menor colaboración.
##Relacionar el dataframe flights con el dataframe airports usando el campo destino
flights_airports <- flights %>%
left_join(airports, by = c("dest" = "faa"))
##Crear un nuevo dataframe con el punto anterior únicamente con los 5 carriers con más vuelos por destino
top_carriers <- flights %>%
group_by(carrier) %>%
summarise(count = n()) %>%
arrange(desc(count)) %>%
slice(1:5) %>%
ungroup() %>%
select(carrier)
flights_top_carriers <- flights_airports %>%
filter(carrier %in% top_carriers$carrier)
##Visualización del punto anterior de las siguientes tres formas
##**Gráfico de barras para la cantidad de vuelos por aerolínea:**
# Asumiendo que flights_top_carriers contiene los datos de los vuelos de los 5 principales transportistas
ggplot(flights_top_carriers, aes(x = carrier, fill = carrier)) +
geom_bar() +
labs(title = "Cantidad de vuelos por aerolínea", x = "Aerolínea", y = "Cantidad de vuelos") +
theme_minimal()
#Interpretación de Gráfica: Esta gráfica de barras nos sirve para
comparar el volumen de operaciones que tiene cada aerolínea y con esto
poder realizar análisis de capacidad operativa y análisis competitivos,
como vemos en la gráfica la aerolínea UA va de primera, teniendo la
mayor cantidad de vuelos.
##**Gráfico de barras para la cantidad de vuelos por destino**
ggplot(flights_top_carriers, aes(x = dest, fill = carrier)) +
geom_bar() +
labs(title = "Cantidad de vuelos por destino", x = "Destino", y = "Cantidad de vuelos") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 90, hjust = 1))
#Interpretación de Gráfica: Observamos la cantidad de vuelos que hay a
los diferentes destinos que son operados por las siguientes aerolíneas
(AA, B6, DL, EV, UA), en este caso podemos ver como cada color va
representando una aerolínea distinta y se observa que la altura de estas
barras es la cantidad de vuelos a los diferentes destinos. Es posible
notar como ciertos destinos presentan una gran concentración de vuelos
por más de una aerolínea, en cambio otros cuentan con una menor
cantidad, lo que nos muestra la popularidad de dichos destinos.
##**Gráfico de barras para la cantidad de vuelos por día del mes**
ggplot(flights_top_carriers, aes(x = factor(day), fill = carrier)) +
geom_bar() +
labs(title = "Cantidad de vuelos por día del mes", x = "Día del mes", y = "Cantidad de vuelos") +
theme_minimal()
#Interpretación de Gráfica:En esta gráfica podemos observar que las
barras muestran los números de vuelos diarios en un mes, para diferentes
aerolíneas. Las capas de color nos indican cuál aerolínea es de la que
se esta hablando y que contribución de vuelos tienen en total en un día.
Ahora hablando sobre la altura combinada de estas barras, nos da a
entender que el número de vuelos se mantiene constante en el mes, sin
ningún tipo de cambios drásticos. Esto es bueno ya que nos señala que
existe una operación regular en el aeropuerto sin grandes modificaciones
en el tráfico aéreo por parte de las aerolíneas.
Durante nuestra investigación sobre la base de datos de nycflights13 aprendimos a interpretar la información y tranformarla en dataframes para poder analizarla de manera más efectiva, pudimos combinar los datos más importantes para obtener nuestros análisis. Gracias a las herramientas que obtuvimos en clase pudimos analizar este caso desde una perspectiva análitica y descriptiva. Comenzamos entendiendo la base de datos descubrimos qué el df flights contiene información de los vuelos que partieron de la ciudad de Nueva York en el año 2013 y los datos más importantes.
Encontramos que la aerolínea más importante del año fue United Airlines con 76,256,278 de millas recorridas y la aerolínea con más distancia promedio recorrida fue Hawaian Airlines ya que los viajes en su mayoría eran de Nueva York a Honolulú.
Aunque United Airlines fue la aerolínea más importante durante el año, no fue la líder en todos los aeropuertos de Nueva York. En EWR la aerolínea United Airlines sí fue líder, mientras qué en LGA fue American Airlines y en JFK JetBlue.
Gracias a estos datos pudimos analizar la problemática de los retrasos, entre todas las variables que analizamos obtuvimos las más importantes. El “Columbia Metropolitan Airport” es el destino con mayor porcentaje de retrasos siendo el 53% de las veces, este aeropuerto genera atrasos en la mitad de sus vuelos, este porcentaje indica que los retrasos son responsabilidad del aeropuerto destino. El aeropuerto destino con más promedio de retraso es Traverse City, Michigan con 89 minutos promedio de retraso. Ahora considerando las variables naturales encontramos que la humedad juega el papel más importante en los retrasos de los aviones, en el 98% de ellos la humedad fue medianamente alta e influyó en el tiempo de vuelo, salida y llegada.
Concluimos que los errores humanos en la gestión de los aeropuertos son temas manejables, se puede analizar el caso y llegar a una solución acertada, mientras que los elementos metereológicos no son manejables hasta la fecha, se necesitarían motores y tecnología que no sufra pérdidas de desempeño o funcionamiento durante las lluvias o diferentes condiciones climáticas adversas.
Con esto podemos llegar a la conclusión de que los patrones operativos en los aeropuertos de la ciudad de Nueva York, así como las diferentes aerolíneas, presentan una gran cantidad de cambios debido al clima, lo que puede determinar las decisiones que se tomarán en la planeación de vuelos y en la gestión aeroportuaria. Vemos cómo las aerolíneas suelen tener una distribución detallada de vuelos que indica la demanda de mercado, las diferentes estrategias operativas y las preferencias de ruta que tienen. Sin embargo, este reparto se puede ver perjudicado por los cambios en las condiciones climáticas que surgen a lo largo del año. Las ilustraciones de los datos demuestran que en enero las temperaturas experimentan alteraciones que podrían impactar en las operaciones aéreas, con un histograma de temperaturas que muestra dos modos de distribución y una trayectoria en el gráfico de líneas que demuestra un incremento en las temperaturas a lo largo de la primera quincena del mes. Además, el número de vuelos por día por parte de cada aerolínea se mantiene constante, como lo vemos en la gráfica de barras apiladas, lo que indica que cuentan con un funcionamiento habitual. Esto nos dice que, aunque las condiciones climáticas cambian frecuentemente, el nivel de operaciones aéreas se mantiene estable, lo que nos permite confiar en la planificación a corto y largo plazo.
El uso de las bases de datos en nuestra carrera y futuras prácticas debe ser utilizado de manera muy respetuosa y responsable, tomando en cuenta que en el futuro estaré muy probablemente trabajando con bases de datos de empresas o personas, a la hora de realizar algún análisis o trabajo, debo comprender la importancia de respetar y cuidar estos datos. La información de las empresas es uno de sus más valiosos activos y estoy consciente que siempre debo actuar con integridad a la hora de trabajar con estos datos. Me comprometo a siempre respetar la privacidad de las personas involucradas en las bases de datos cuándo se involucren datos personales o datos críticos de la empresa que puedan ser utilizados en su contra por terceros.
Al hablar de la integridad nos referimos al hablar de transparencia, es decir ser éticos y responsables con las acciones que tomamos al tomar una decisión, cabe recalcar que siempre debemos utilizar esta transparencia a la hora de trabajar en una empresa y con sus informaciones clasificadas. Es de suma importancia conservar siempre tu integridad para así lograr formar lazos de confianza con tus mismos clientes, para así poder garantizar un éxito duradero.
Somos muy afortunados que como institución muchas empresas nos comparten sus bases de datos. En el bloque de Indicadores y Riesgos con Visión Estratégica, trabajamos con los datos de Arca Continental, una empresa muy grande que valúa sus datos. En un futuro, idealmente trabajaré con las bases de datos de diversas empresas, y es necesario tener en cuenta que esos datos son oro. Una empresa te confía con ellos, y la competencia haría lo que sea para conseguirlos. Han habido miles de millones de casos que algún extorsionador “breachea” los datos de una empresa, y amenaza con publicarlos. Ahora imagina lo fácil que es si este hacker hubiera decidido hackearme a mí. Seguramente es más fácil que hackear a una empresa, y ahora yo estoy ligado al problema. Por esta razón y muchas más, es crítico cuidar de los datos que nos comparten las empresas con las que trabajamos.