El paquete nycflights13 contine información sobre todos los vuelos que partieron desde Nueva York (EWR, JFK Y LGA) a destinos en los Estados Unidos en 2013. Fueron 336776 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:
# install.packages("nycflights13")
library(nycflights13)
# install.packages("tidyverse")
library(tidyverse)## Warning: package 'tidyverse' was built under R version 4.3.3
## Warning: package 'ggplot2' was built under R version 4.3.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.3 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.0 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.0
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
La función select sirve para selecciones columnas de una tabla (data frame).
La función Filter sirve para seleccionar renglones de una tabla (data frame).
Tema: base de datos, sus campos, registros,tipos de datos y los resultados descriptivos de la base de datos.
Situación problema: ¿Cómo mejorar la posición competitiva de una de las aerolíneas líderes en los aeropuertos de Nueva York?
Instrucciones:
• 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: dplyr
###1. Cargar en memoria la tabla flights y mostrar su contenido
## # 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>
###2. Cargar en memoria la tabla flights y mostrar su contenido. Consulta la estructura de flights, ¿Cuáles son los campos y sus tipos de datos? Identifica los diferentes tipos de datos y explica en qué consiste cada uno de ellos y cuál es la diferencia entre uno y otro, incluyendo los siguientes tipos de datos: int, dbl, chr, dttm
## 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" ...
###3. ¿Cuál es la clase de flights? y ¿Qué significa?
## [1] "tbl_df" "tbl" "data.frame"
###4. ¿Cuántas columnas tiene flights?
## [1] 19
###5. ¿Cuántos renglones tiene flights?
## [1] 336776
###6. ¿Cuál es la dimensión de flights?
## [1] 336776 19
###7. Consulta la tabla flights
###8. Genera un output de la tabla flights. Utiliza las funciones head y tail, ¿Cuántos renglones muestran por defecto cada función?
## # 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>
## # 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>
###9. Ahora muestra los primeros 50 registros y los últimos 20, ¿Cómo lo harías?
## # 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>
## # 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>
###10. Encuentra los resultados descriptivos de las variables en la base de datos. Ejemplo: promedio, moda, mínimo, máximo, etc.Función: summary.
## 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
##
Funciones básicas para la manipulación de datos. Temas: Dplyr (filter, arrange, select, rename, mutate, summarize, group_by) if/else, subset, for (loops) Situación problema: ¿Cómo mejorar la posición competitiva de una de las aerolíneas líderes en los aeropuertos de Nueva York? 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
###1. Mostrar la base de datos flights para que conozcas su contenido
###2. Encuentra los datos descriptivos del data frame flights. Identifica la media de las distancias recorridas en millas.
## 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
##
###3. Define un criterio para encontrar las aerolíneas que han recorrido más distancia (en millas) y crea un nuevo data frame que filtre solamente a las aeorlíneas que han recorridao una distancia superior a la media, se desea ver los campos carrier, distance, origin, dest en forma descendente por distance. Ejemplo: aerolíneas con millas recorridas superiores a la media, ordenadas en forma descendente.
#selecciona las variables carrier, distance, origin, dest de la tabla
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)
#ordena en forma descendente por distancia recorrida
res03 <- arrange(res02, desc(distance))###4. Encuentra la suma y la media de las distancias recorridas por carrier, elimina los NA’S e interpreta que significa la suma y la media de las distancias recorridas.
#Agrupar los datos por carrier,origin, dest y obtener la suma acumulada y la media de las distancias recorridas por carrier eliminando los NA's
res04 <- res03 %>%
group_by(carrier,origin,dest)
sumdistance <- sum(res03$distance, n= TRUE)###5. Ordena en forma descendente por distancia recorrida
###6.Observa tus resultados de la última tabla y agrega tus interpretaciones
###7.Identifica si las aerolíneas líderes son las mismas en los tres
aeropuertos cuyo origen es Nueva York ( John F. Kennedy (JFK), LaGuardia
(LGA) and Newark Liberty (EWR) ).
Genera un data frame para cada aeropuerto. Funciones: filter(),
arrange()
###1. Consulta las tablas planes y weather para que conozcas su contenido.
###2. Se necesita saber de cada vuelo, la aerolínea, el aeropuerto de origen y el aeropuerto destino.
###3. En la consulta anterior se necesita conocer el nombre de la aerolínea.
###4 Se necesita saber la cantidad de vuelos por cada destino para identificar cuáles son los destinos más buscados.
###5 Agregar el nombre de la aerolínea a la tabla anterior.
###6. Se necesita conocer las aerolíneas (clave y nombre) y destinos que vuelan por la Mañana: de 6 a 12, Tarde: de 12 a 19 , Noche: de 19 a 24 y Madrugada de 24 a 6. # Agrega un nuevo campo a la tabla con el nombre de clas_horario y agrega, mañana, tarde, noche y madrugada según sea el caso.
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"))))###7.Se necesita saber la cantidad de vuelos por aerolínea y destino que hay por la Mañana, Tarde, Noche y Madrugada.
###8 Se necesita saber a qué destinos vuela la aerolínea American Airlines Inc.-AA durante la madrugada.
destinos_aa <- clasxhora %>%
select(carrier,name, dest,clas_horario) %>%
filter(carrier == "AA" & clas_horario == "Madrugada") %>%
group_by(carrier,name, dest,clas_horario)###9. ¿Qué aviones utiliza la aerolínea AA? aerolínea, tipo, motor y número de asientos y ¿Cuántos vuelos se han realizado con cada uno? elimina los NA’s
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()La aerolínea American Airlines utiliza principalmente aviones de tipo “Fixed wing multi engine”. La aerolínea American Airlines utiliza principalmente motores “turbo fan” en sus aviones. La aerolínea American Airlines utiliza aviones que tienen desde 2 asientos (463) hasta 330 asientos (450).
Te acabas de incorporar a una empresa consultora en Inteligencia de Negocios, actualmente están brindando servicios de análisis para la industria de la aviación y les interesa tener a la aerolínea American Airlines como cliente ya que es una de las aerolíneas líderes en los aeropuertos de Nueva York, motivo por el cuál te han contratado.
## # 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>
## # 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
## # A tibble: 1,458 × 8
## faa name lat lon alt tz dst tzone
## <chr> <chr> <dbl> <dbl> <dbl> <dbl> <chr> <chr>
## 1 04G Lansdowne Airport 41.1 -80.6 1044 -5 A America/…
## 2 06A Moton Field Municipal Airport 32.5 -85.7 264 -6 A America/…
## 3 06C Schaumburg Regional 42.0 -88.1 801 -6 A America/…
## 4 06N Randall Airport 41.4 -74.4 523 -5 A America/…
## 5 09J Jekyll Island Airport 31.1 -81.4 11 -5 A America/…
## 6 0A9 Elizabethton Municipal Airport 36.4 -82.2 1593 -5 A America/…
## 7 0G6 Williams County Airport 41.5 -84.5 730 -5 A America/…
## 8 0G7 Finger Lakes Regional Airport 42.9 -76.8 492 -5 A America/…
## 9 0P2 Shoestring Aviation Airfield 39.8 -76.6 1000 -5 U America/…
## 10 0S9 Jefferson County Intl 48.1 -123. 108 -8 A America/…
## # ℹ 1,448 more rows
## # A tibble: 16 × 2
## carrier name
## <chr> <chr>
## 1 9E Endeavor Air Inc.
## 2 AA American Airlines Inc.
## 3 AS Alaska Airlines Inc.
## 4 B6 JetBlue Airways
## 5 DL Delta Air Lines Inc.
## 6 EV ExpressJet Airlines Inc.
## 7 F9 Frontier Airlines Inc.
## 8 FL AirTran Airways Corporation
## 9 HA Hawaiian Airlines Inc.
## 10 MQ Envoy Air
## 11 OO SkyWest Airlines Inc.
## 12 UA United Air Lines Inc.
## 13 US US Airways Inc.
## 14 VX Virgin America
## 15 WN Southwest Airlines Co.
## 16 YV Mesa Airlines Inc.
## # 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>
## 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" ...
# int: entero (no tiene decimales). Se utiliza para almacenar valores numéricos sin decimales, como la cantidad de pasajeros o el número de vuelos.
# dbl: Se usa para almacenar números con decimales, como distancias o precios.
# num: numérico (tiene decimales) peso
# chr: caracter (letras). Se usa para almacenar texto, como nombres o palabras.
# Date: fecha (en R va año-mes-día)
# POSIXct: formato fecha y hora. Es un tipo de dato que representa una fecha y hora específica. Se utiliza para almacenar información temporal, como la fecha de un vuelo o la hora de salida.## [1] "tbl_df" "tbl" "data.frame"
## function (x) .Primitive("class")
# Las 5 clases de objetos son:
# 1. numeric: número real o decimales
# 2. integer: números enteros
# 3. complex: números complejos
# 4. character: caracteres, letras o palabras
# 5. logical: TRUE o FALSE
# Las 4 clases de objetos compuestos son:
# 1. list: lista
# 2. matrix: matriz (es todo lo mismo)
# 3. array: colección de objetos
# 4. data.frame: base de datos (es mezclado)## [1] 19
## [1] 336776
## [1] 336776 19
## # 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>
## # 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>
## 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
##
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 17 502 872 1040 1389 4983
Podemos ver que la distancia media en millas es de 1040
media_distancia <- mean(flights$distance, na.rm = TRUE)
aerolineas_top <- flights %>%
filter(distance > media_distancia) %>%
select(carrier, distance, origin, dest) %>%
arrange(desc(distance))
print(aerolineas_top)## # 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
distancia_aerolinea <- flights %>%
filter(!is.na(distance)) %>%
group_by(carrier) %>%
summarise(
suma_distancia = sum(distance),
media_distancia = mean(distance, na.rm = TRUE)
) %>%
arrange(desc(suma_distancia))
print(distancia_aerolinea)## # A tibble: 16 × 3
## carrier suma_distancia media_distancia
## <chr> <dbl> <dbl>
## 1 UA 89705524 1529.
## 2 DL 59507317 1237.
## 3 B6 58384137 1069.
## 4 AA 43864584 1340.
## 5 EV 30498951 563.
## 6 MQ 15033955 570.
## 7 VX 12902327 2499.
## 8 WN 12229203 996.
## 9 US 11365778 553.
## 10 9E 9788152 530.
## 11 FL 2167344 665.
## 12 AS 1715028 2402
## 13 HA 1704186 4983
## 14 F9 1109700 1620
## 15 YV 225395 375.
## 16 OO 16026 501.
# Función para crear un data frame para un aeropuerto
aeropuerto_df <- function(aeropuerto) {
flights %>%
filter(origin == aeropuerto) %>%
filter(!is.na(distance)) %>%
group_by(carrier) %>%
summarise(
suma_distancia = sum(distance),
media_distancia = mean(distance, na.rm = TRUE)
) %>%
arrange(desc(suma_distancia))
}
# Data frames para cada aeropuerto
jfk_df <- aeropuerto_df("JFK")
lga_df <- aeropuerto_df("LGA")
ewr_df <- aeropuerto_df("EWR")
# Mostrar los data frames
print(jfk_df)## # A tibble: 10 × 3
## carrier suma_distancia media_distancia
## <chr> <dbl> <dbl>
## 1 B6 46858933 1114.
## 2 DL 34970353 1689.
## 3 AA 22891534 1661.
## 4 UA 11496375 2536.
## 5 VX 8972450 2495.
## 6 9E 7426450 507.
## 7 US 3376685 1127.
## 8 MQ 2887772 401.
## 9 HA 1704186 4983
## 10 EV 322193 229.
## # A tibble: 13 × 3
## carrier suma_distancia media_distancia
## <chr> <dbl> <dbl>
## 1 DL 20861920 904.
## 2 AA 16100472 1041.
## 3 MQ 10509739 621.
## 4 UA 9258277 1151.
## 5 B6 6181593 1030.
## 6 WN 5517587 906.
## 7 EV 4316573 489.
## 8 US 3779472 288.
## 9 FL 2167344 665.
## 10 9E 1580071 622.
## 11 F9 1109700 1620
## 12 YV 225395 375.
## 13 OO 11018 424.
## # A tibble: 12 × 3
## carrier suma_distancia media_distancia
## <chr> <dbl> <dbl>
## 1 UA 68950872 1496.
## 2 EV 25860185 589.
## 3 WN 6711616 1085.
## 4 B6 5343611 815.
## 5 AA 4872578 1397.
## 6 US 4209621 956.
## 7 VX 3929877 2510.
## 8 DL 3675044 846.
## 9 AS 1715028 2402
## 10 MQ 1636444 719
## 11 9E 781631 616.
## 12 OO 5008 835.
American Airlines tiene una alta suma de distancia recorrida, lo que
indica que es una aerolínea con una amplia red de rutas y un gran
volumen de pasajeros. La media de la distancia recorrida por AA es
superior a la media de otras aerolíneas, lo que indica que sus vuelos
son generalmente más largos. Estos datos podrían ser relevantes para los
inversores que buscan una aerolínea con una fuerte presencia en el
mercado y un historial de rentabilidad.
En este trabajo pudimos utilizar las funciones más comunes del análisis explotarotio, el cual es el primer paso para cualquier trabajo de manipulación de datos, hicimos uso de distintas herramientas para analizar medias, distancias mayores y menores y así finalmente analizar los beneficios de tener a American Airlines como nuevo cliente, descubriendo su gran potencial en múltiples aeropuertos como aerolinea líder.
Según Destino:
summary_delay <- flights %>%
group_by(dest) %>%
summarize(
avg_delay = mean(dep_delay, na.rm = TRUE),
total_flights = n(),
total_delayed_flights = sum(dep_delay > 0, na.rm = TRUE),
perc_delayed_flights = {
total_delayed_flights / total_flights * 100
}
) %>%
arrange(desc(perc_delayed_flights))
summary_delay## # A tibble: 105 × 5
## dest avg_delay total_flights total_delayed_flights perc_delayed_flights
## <chr> <dbl> <int> <int> <dbl>
## 1 ANC 12.9 8 6 75
## 2 MTJ 17.6 15 11 73.3
## 3 JAC 26.5 25 16 64
## 4 CAE 35.6 116 72 62.1
## 5 HDN 12.3 15 9 60
## 6 SBN 21.1 10 6 60
## 7 OKC 30.6 346 196 56.6
## 8 MDW 18.6 4113 2251 54.7
## 9 TUL 34.9 315 172 54.6
## 10 SMF 18.7 284 146 51.4
## # ℹ 95 more rows
# Filtrar los 10 aeropuertos con mayor retraso
top_10_airports <- summary_delay %>%
arrange(desc(avg_delay)) %>%
head(10)
# Crear un gráfico de barras
ggplot(top_10_airports, aes(x = dest, y = avg_delay)) +
geom_bar(stat = "identity") +
labs(title = "Top 10 aeropuertos con mayor retraso promedio",
x = "Aeropuerto de destino",
y = "Retraso promedio (minutos)") +
theme_minimal()
Según Hora de Partida:
retraso_horas <- flights %>%
group_by(hour) %>%
summarize(
avg_delay = mean(dep_delay, na.rm = TRUE),
total_flights = n(),
total_delayed_flights = sum(dep_delay > 0, na.rm = TRUE),
perc_delayed_flights = {
total_delayed_flights / total_flights * 100
}
) %>%
arrange(desc(total_delayed_flights))
retraso_horas## # A tibble: 20 × 5
## hour avg_delay total_flights total_delayed_flights perc_delayed_flights
## <dbl> <dbl> <int> <int> <dbl>
## 1 17 21.1 24426 12132 49.7
## 2 15 16.9 23888 11364 47.6
## 3 19 24.8 21441 10839 50.6
## 4 16 18.8 23002 10699 46.5
## 5 18 21.1 21783 10636 48.8
## 6 14 13.8 21706 9257 42.6
## 7 20 24.3 16739 8633 51.6
## 8 13 11.4 19956 8183 41.0
## 9 8 4.13 27242 6790 24.9
## 10 12 8.61 18181 6408 35.2
## 11 21 24.2 10933 5596 51.2
## 12 6 1.64 25951 5430 20.9
## 13 9 4.58 20312 5392 26.5
## 14 11 7.19 16033 5034 31.4
## 15 7 1.91 22821 4963 21.7
## 16 10 6.50 16708 4942 29.6
## 17 22 18.8 2639 1184 44.9
## 18 5 0.688 1953 489 25.0
## 19 23 14.0 1061 461 43.4
## 20 1 NaN 1 0 0
# Crea un gráfico de barras para mostrar el número total de vuelos retrasados por hora
ggplot(retraso_horas, aes(x = hour, y = total_delayed_flights)) +
geom_bar(stat = "identity", fill = "skyblue") +
labs(title = "Total de vuelos retrasados por hora",
x = "Hora del dia",
y = "Total de vuelos retrasados") +
theme_minimal()# Crea un gráfico de líneas para mostrar el porcentaje de vuelos retrasados por hora
ggplot(retraso_horas, aes(x = hour, y = perc_delayed_flights)) +
geom_line(color = "red") +
labs(title = "Porcentaje de vuelos retrasados por hora",
x = "Hora del dia",
y = "Porcentaje de vuelos retrasados (%)") +
theme_minimal()
Retraso según Aerolínea:
top_bottom_3 <- flights %>%
group_by(carrier) %>%
summarise(avg_delay = mean(dep_delay, na.rm = TRUE),
total_flights = n(),
total_delayed_flights = sum(dep_delay > 0, na.rm = TRUE),
perc_delayed_flights = total_delayed_flights / total_flights * 100) %>%
arrange(desc(perc_delayed_flights))
top_bottom_3## # A tibble: 16 × 5
## carrier avg_delay total_flights total_delayed_flights perc_delayed_flights
## <chr> <dbl> <int> <int> <dbl>
## 1 WN 17.7 12275 6558 53.4
## 2 FL 18.7 3260 1654 50.7
## 3 F9 20.2 685 341 49.8
## 4 UA 12.1 58665 27261 46.5
## 5 VX 12.9 5162 2225 43.1
## 6 EV 20.0 54173 23139 42.7
## 7 B6 13.0 54635 21445 39.3
## 8 YV 19.0 601 233 38.8
## 9 9E 16.7 18460 7063 38.3
## 10 DL 9.26 48110 15241 31.7
## 11 AS 5.80 714 226 31.7
## 12 AA 8.59 32729 10162 31.0
## 13 MQ 10.6 26397 8031 30.4
## 14 OO 12.6 32 9 28.1
## 15 US 3.78 20536 4775 23.3
## 16 HA 4.90 342 69 20.2
titulo <- "Top 3 Aerolineas (Retraso Promedio)"
ggplot(top_bottom_3, aes(x = carrier, y = perc_delayed_flights)) +
geom_bar(stat = "identity") +
labs(title = titulo,
x = "Aerolinea",
y = "Retraso promedio (minutos)",
# Rotate x-axis labels for better readability
x.text.angle = 45
) +
theme_minimal()
Retraso según Modelo de Avión:
1. Podemos ver que los modelos de avión N258JB, N228JB y
N15980 son los que tienen mayor porcentaje de retraso siendo
43%, 42% y 50% respectivamente. 2. Los modelos
N364NB, N37419 y N3755D son los que tienen menor
cantidad de vuelos afectados siendo 46 los vuelos
afectados (retrasados), sin embargo los porcentaje siguen
altos.
retraso_model <- flights %>%
group_by(tailnum) %>%
summarize(
avg_delay = mean(dep_delay, na.rm = TRUE),
total_flights = n(),
total_delayed_flights = sum(dep_delay > 0, na.rm = TRUE),
perc_delayed_flights = {
total_delayed_flights / total_flights * 100
}
) %>%
arrange(desc(total_delayed_flights))
retraso_model## # A tibble: 4,044 × 5
## tailnum avg_delay total_flights total_delayed_flights perc_delayed_flights
## <chr> <dbl> <int> <int> <dbl>
## 1 N258JB 16.8 427 186 43.6
## 2 N228JB 19.8 388 165 42.5
## 3 N15980 24.7 316 158 50
## 4 N190JB 14.7 362 157 43.4
## 5 N725MQ 6.87 575 152 26.4
## 6 N15910 29.3 280 151 53.9
## 7 N324JB 14.8 370 151 40.8
## 8 N327AA 11.6 387 150 38.8
## 9 N298JB 14.0 407 146 35.9
## 10 N922XJ 20.4 309 146 47.2
## # ℹ 4,034 more rows
top_5_modelos <- retraso_model %>%
head(5)
# Crear un gráfico de barras
ggplot(top_5_modelos, aes(x = tailnum, y = total_delayed_flights)) +
geom_bar(stat = "identity") +
labs(title = titulo,
x = "Modelo de avion (tail number)",
y = "Cantidad de vuelos (Retrasados)") +
theme_minimal()
Retraso según Humedad: (No tan signifacante)
Estos pueden verse afectados dependiendo de:
Tipo de aeronave: Algunos aviones son más sensibles a la humedad que
otros. Los aviones más pequeños o con motores más antiguos pueden verse
más afectados por la humedad alta.
Condiciones climáticas: La visibilidad, la temperatura y la velocidad
del viento también influyen en la decisión de despegar o no. La humedad
alta combinada con otros factores climáticos adversos aumenta la
probabilidad de un retraso o cancelación.
Humedad (humid):.
-Humedad baja (menos del 40%): En general, no hay problemas para
volar.
-Humedad moderada (40%-70%): La mayoría de los aviones pueden volar sin
problemas. Algunas aerolíneas pueden tener restricciones para ciertos
tipos de aeronaves o rutas.
-Humedad alta (más del 70%): Aumenta el riesgo de retrasos o
cancelaciones. Las aerolíneas pueden tener restricciones más severas
para volar en estas condiciones.
Podemos ver que la mayor cantidad de vuelos retrasados presentaban
una humedad de 100, dando en promedio de minutos un
retraso de 23.15min.
Y por otro lado cuando la humedad es de 60, el promedio
de retraso de minutos es de 4.58minutos.
#Primero uniremos la base de datos a weather usando Merge
baseevidencia <- merge(flights,weather,by=c("origin","time_hour"))
#Ahora si vemos la correlación
retraso_humedad <- baseevidencia %>%
group_by(humid) %>%
summarize(
avg_delay = mean(dep_delay, na.rm = TRUE),
total_flights = n(),
total_delayed_flights = sum(dep_delay > 0, na.rm = TRUE),
perc_delayed_flights = {
total_delayed_flights / total_flights * 100
}
) %>%
arrange(desc(total_delayed_flights))
retraso_humedad## # A tibble: 2,443 × 5
## humid avg_delay total_flights total_delayed_flights perc_delayed_flights
## <dbl> <dbl> <int> <int> <dbl>
## 1 100 23.2 2994 1331 44.5
## 2 94.1 42.0 782 422 54.0
## 3 88.6 45.3 632 356 56.3
## 4 93.1 27.0 677 350 51.7
## 5 79.0 33.9 642 340 53.0
## 6 90.1 36.0 538 299 55.6
## 7 90.7 38.4 554 293 52.9
## 8 49.7 24.1 615 285 46.3
## 9 84.3 30.7 609 268 44.0
## 10 54.5 6.25 808 260 32.2
## # ℹ 2,433 more rows
Retraso según Meses del Año:
Podemos observar que los meses en los que se producen mayores retrasos
de salida es en los meses de:
retraso_mes <- flights %>%
group_by(month) %>%
summarize(
avg_delay = mean(dep_delay, na.rm = TRUE),
total_flights = n(),
total_delayed_flights = sum(dep_delay > 0, na.rm = TRUE),
perc_delayed_flights = {
total_delayed_flights / total_flights * 100
}
) %>%
arrange(desc(total_delayed_flights))
retraso_mes## # A tibble: 12 × 5
## month avg_delay total_flights total_delayed_flights perc_delayed_flights
## <int> <dbl> <int> <int> <dbl>
## 1 7 21.7 29425 13909 47.3
## 2 12 16.6 28135 13550 48.2
## 3 6 20.8 28243 12655 44.8
## 4 8 12.6 29327 11713 39.9
## 5 5 13.0 28796 11291 39.2
## 6 3 13.2 28834 11209 38.9
## 7 4 13.9 28330 10543 37.2
## 8 1 10.0 27004 9662 35.8
## 9 2 10.8 24951 9124 36.6
## 10 10 6.24 28889 8722 30.2
## 11 11 5.44 27268 8239 30.2
## 12 9 6.72 27574 7815 28.3
titulo <- "Meses y retrasos en promedio (minutos)"
ggplot(retraso_mes, aes(x = factor(month, levels = 1:12, labels = month.name), y = perc_delayed_flights)) +
geom_bar(stat = "identity") +
labs(title = titulo,
x = "Mes",
y = "Retraso promedio (minutos)"
) +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))Evidencia 2 - Analítica descriptiva (Integración de datos a través de
modelo entidad-relación)
Compromiso ético y ciudadano. Se te 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.
## # 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
## # 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 son ORD (Aeropuerto Internacional O’Hare) con 17,283 vuelos, ATL (Atlanta) con 17,215 vuelos y LAX (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.
## # 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
La aerolínea con mayor cantidad de vuelos es DL (DELTA AIRLINES): Delta Air Lines es una aerolínea comercial estadounidense cuya base está situada en Atlanta, Georgia. Es miembro fundador, junto con Aeroméxico, Air France y Korean Air, de SkyTeam, una alianza de aerolíneas globales que ofrece a los clientes un gran número de destinos alrededor del mundo, vuelos y otros servicios
vuelo_porhora <- flights %>%
select(carrier, dest, sched_dep_time) %>%
left_join(airlines, by = "carrier")
clas_hora<- mutate(vuelo_porhora, clas_horario = ifelse(sched_dep_time %in% 600:1159,"Morning",
ifelse(sched_dep_time %in% 1200:1859,"Afertnoon",
ifelse(sched_dep_time %in% 1900:2400,"Night", "Madrugada"))))
clas_hora## # 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. Morning
## 6 UA ORD 558 United Air Lines Inc. Madrugada
## 7 B6 FLL 600 JetBlue Airways Morning
## 8 EV IAD 600 ExpressJet Airlines Inc. Morning
## 9 B6 MCO 600 JetBlue Airways Morning
## 10 AA ORD 600 American Airlines Inc. Morning
## # ℹ 336,766 more rows
# Agrupar por aerolínea, destino y franja horaria y contar la cantidad de vuelos
vuelos_conteo <- clas_hora %>%
group_by(carrier, dest, clas_horario) %>% count()
# Mostrar los resultados
vuelos_conteo## # A tibble: 741 × 4
## # Groups: carrier, dest, clas_horario [741]
## carrier dest clas_horario n
## <chr> <chr> <chr> <int>
## 1 9E ATL Morning 59
## 2 9E AUS Afertnoon 2
## 3 9E AVL Morning 10
## 4 9E BGR Night 1
## 5 9E BNA Afertnoon 467
## 6 9E BNA Morning 6
## 7 9E BNA Night 1
## 8 9E BOS Afertnoon 549
## 9 9E BOS Morning 271
## 10 9E BOS Night 94
## # ℹ 731 more rows
destinos_american <- clas_hora %>%
select(carrier,name, dest,clas_horario) %>%
filter(carrier == "AA" & clas_horario == "Madrugada") %>%
group_by(carrier,name, dest,clas_horario)
destinos_american## # 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
American Airlines realiza vuelos de madrugada a únicamente el destino
de Miami. #### 1.9.Qué aviones utiliza la aerolínea AA? aerolínea,
tipo, motor y número de asientos y ¿Cuántos vuelos se han realizado con
cada uno? (elimina los NA’s)“
avion_american <- 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_american## # 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
En los avances anteriores se han realizado diferentes análisis y ahora nos solicitan hacer visualizaciones de la aerolínea American Airlines para los ejecutivos con las siguientes características. Dentro de las aerolíneas el retraso tanto en la hora de partida como en la hora de llegada a su destino van generando indicadores negativos. #### Se solicita analizar para la aerolínea American Airlines si los vuelos que tienen retraso en la partida también tienen retraso en la hora de llegada.
# Filtrar los vuelos de American Airlines (AA)
american_flights <- flights %>% filter(carrier == "AA")
# Mostrar la relación entre el retraso en la partida y el retraso en la llegada
cor(american_flights$dep_delay, american_flights$arr_delay, use = "complete.obs")## [1] 0.8917433
# Filtrar los vuelos de American Airlines (AA)
american_flights <- flights %>% filter(carrier == "AA")
# Crear un gráfico de dispersión
ggplot(american_flights, aes(x = dep_delay, y = arr_delay)) +
geom_point(alpha = 0.5, color = "blue") +
labs(main = "Relación entre Retraso en Salida y Llegada para American Airlines", x = "Retraso en la Partida (minutos)", y = "Retraso en la Llegada (minutos)") +
theme_minimal()## Warning: Removed 782 rows containing missing values or values outside the scale range
## (`geom_point()`).
El resultado de la correlación entre el retraso en la partida y el
retraso en la llegada para los vuelos de American Airlines (AA) es
aproximadamente 0.8917. Este valor cercano a 1 indica una fuerte
correlación positiva entre ambas variables. En otras palabras, hay una
tendencia a que los vuelos que experimentan retraso en la salida también
tengan retraso en la llegada.
library(ggplot2)
# Filtrar los datos para los primeros 15 días de enero en el aeropuerto Newark
weather_january <- weather %>%
filter(month == 1 & day <= 15 & origin == "EWR")
# Gráfico de línea para la tendencia de temperatura
ggplot(weather_january, aes(x = day, y = temp)) +
geom_line(color = "black", size = 1) +
labs(main="Tendencia de la Temperatura en los Primeros 15 Días de Enero (Aeropuerto Newark)",
x=weather_january$day,
y=weather_january$temp)## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
#### Visualiza la temperatura más frecuente en los primeros 15 días del
mes de Enero, utilizar un histrograma.
# Filtrar los datos para los primeros 15 días de enero en el aeropuerto Newark
weather_january <- weather %>%
filter(month == 1 & day <= 15 & origin == "EWR")
# Gráfico de línea para la tendencia de temperatura
ggplot(weather_january, aes(x = temp)) +
geom_histogram(binwidth = 1, fill = "skyblue", color = "black") +
labs(main="Tendencia de la Temperatura en los Primeros 15 Días de Enero (Aeropuerto Newark)",
x=weather_january$day,
y=weather_january$temp)
#### Utiliza Facets para observar cómo varía la temperatura en cada mes
en el histograma del punto anterior .
weather %>%
ggplot(aes(x = temp)) +
geom_histogram(binwidth = 2, fill = "skyblue", color = "black") +
labs(title = "Histograma de Temperaturas por Mes",
x = "Temperatura (Fahrenheit)",
y = "Frecuencia") +
facet_wrap(~month)## Warning: Removed 1 row containing non-finite outside the scale range
## (`stat_bin()`).
#### Número de vuelos que salieron de Nueva York en 2013 por aerolínea
(mostrar solamente las 10 aerolíneas con más vuelos), utilizar gráfica
de barras.
flights %>%
group_by(carrier) %>%
summarise(num_flights = n()) %>%
arrange(desc(num_flights)) %>%
slice(1:10) %>%
ggplot(aes(x = reorder(carrier, -num_flights), y = num_flights)) +
geom_bar(stat = "identity", fill = "skyblue") +
labs(title = "Numero de vuelos por aerolinea",
x = "Aerolinea",
y = "Numero de Vuelos") +
theme_minimal()
Según el gráfico “Número de vuelos por aerolínea en 2013”, se observa
que las aerolíneas con mayor cantidad de vuelos desde Nueva York durante
ese año fueron “United Airlines” y “JetBlue Airways”. Estas dos
aerolíneas lideran significativamente en términos de la cantidad de
vuelos, superando a otras compañías. El gráfico proporciona una rápida
visualización de la distribución de vuelos entre las aerolíneas
principales, siendo útil para comprender la participación relativa de
cada una en el tráfico aéreo desde Nueva York en 2013. #### Visualiza el
punto anterior en una gráfica de pie.
## [1] "en_US.UTF-8"
# Filtramos los datos para obtener la cantidad de vuelos por aerolínea
top_airlines <- flights %>%
group_by(carrier) %>%
summarise(num_flights = n()) %>%
arrange(desc(num_flights)) %>%
slice(1:10) # Seleccionamos las 10 aerolíneas con más vuelos
ggplot(top_airlines, aes(x = "", y = num_flights, fill = factor(carrier))) +
geom_bar(stat = "identity", width = 1) +
coord_polar(theta = "y") +
labs(title = "Distribución del Número de Vuelos por Aerolínea desde Nueva York en 2013",
fill = "Aerolínea",
x = NULL,
y = NULL) +
theme_minimal() +
theme(legend.position = "bottom")
#### Relaciona el data frame fligths con el data frame airports a través
del campo destino.
# Crea un nuevo data frame con los 5 carriers con más vuelos
top_carriers <- union_fya %>%
group_by(carrier) %>%
summarise(num_flights = n()) %>%
arrange(desc(num_flights)) %>%
slice(1:5) %>%
ungroup()
# Muestra el nuevo data frame
print(top_carriers)## # A tibble: 5 × 2
## carrier num_flights
## <chr> <int>
## 1 UA 58665
## 2 B6 54635
## 3 EV 54173
## 4 DL 48110
## 5 AA 32729
# DataFrame con los resultados
top_carriers <- union_fya %>%
group_by(carrier, origin) %>%
summarise(num_flights = n()) %>%
arrange(desc(num_flights)) %>%
slice(1:5) %>%
ungroup()## `summarise()` has grouped output by 'carrier'. You can override using the
## `.groups` argument.
ggplot(top_carriers, aes(x = carrier, y = num_flights, fill = as.factor(carrier))) +
geom_bar(stat = "identity", position = "stack") +
labs(x = "Carrier", y = "Number of Flights", title = "Top 5 Carriers con más vuelos por aeropuerto") +
facet_wrap(~origin, scales = "free_x") +
theme_minimal()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() +
geom_text(stat = "count", aes(label = ..count.., group = carrier), vjust = -0.5)## Warning: The dot-dot notation (`..count..`) was deprecated in ggplot2 3.4.0.
## ℹ Please use `after_stat(count)` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
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))Los vuelos que salen en meses de alta demanda tienen más retrasos debido a la mayor complejidad en las operaciones y el aumento del tráfico. Por ejemplo, en julio y diciembre, se encuentran los vuelos que tienen mayores porcentajes de retraso, teniendo porcentajes de 47.27% y de 48.16%, mientras que el mes de septiembre tiene un porcentaje de 28.34%. Esto podría hacer que empresas tipo American Airlines se enfoquen más en estos meses para abastecer la atención y operaciones
Las aerolíneas ejercen un impacto significativo en los retrasos de los vuelos, ya que la disponibilidad de personal y la demanda de viajes varían entre ellas. Esto se refleja en que Southwest Airlines Co. tiene un índice de retraso del 53.4% (con 12 mil vuelos totales), mientras que Hawaiian Airlines Inc. solo registra un 20.2% de retrasos (con 342 vuelos). American Airlines se encuentra entre las aerolineas con menor porcentaje de retraso, teniendo un porcentaje de 31%.
-Los datos muestran que a las 17:00 horas hay un retraso promedio de 21.10 minutos, afectando casi la mitad de los vuelos (49.67%). A las 19:00 horas, el retraso promedio aumenta ligeramente a 24.78 minutos, con menos vuelos afectados. En contraste, a las 6:00 a.m., el retraso promedio es el más bajo (1.64 minutos), con solo el 20.92% de los vuelos afectados. Estos resultados destacan cómo la hora de salida influye en la incidencia y magnitud de los retrasos en los vuelos.
-Los datos revelan disparidades significativas en los retrasos de vuelos según el destino. ANC destaca con el mayor porcentaje de retrasos, alcanzando el 75%, y un retraso promedio de 12.88 minutos, sugiriendo posibles desafíos operativos en esas rutas. Por otro lado, XNA muestra uno de los porcentajes de retraso más bajos, con solo un 25.48% de vuelos afectados y un retraso promedio de 6.4 minutos, indicando una gestión operativa más eficiente o condiciones favorables en sus rutas. Estos resultados subrayan la importancia de considerar el destino específico al evaluar los patrones de retraso en los vuelos.
-En la noche se observa la mayor proporción de retrasos en comparación con la mañana, debido a la menor disponibilidad de personal (sin que la demanda esté relacionada con esto). Se destaca que entre las horas 7 a 9 pm, se registra un 50.5% y 51.2% de retrasos, respectivamente, evidenciando un punto álgido en este período.
En nuestro debe como analistas de datos nos comprometemos a ser justos con los datos de una empresa. Esto implica garantizar la confidencialidad de la información sensible, utilizar métodos y técnicas éticas en el análisis, y presentar los resultados de manera transparente y comprensible. Además, nos comprometemos a cuestionar cualquier práctica que pueda comprometer la integridad de los datos o el análisis, abogando siempre por la toma de decisiones éticas y responsables.
En nuestro debe como analistas de datos nos comprometemos a ser justos con los datos de una empresa. Esto implica garantizar la confidencialidad de la información sensible, utilizar métodos y técnicas éticas en el análisis, y presentar los resultados de manera transparente y comprensible. Además, nos comprometemos a cuestionar cualquier práctica que pueda comprometer la integridad de los datos o el análisis, abogando siempre por la toma de decisiones éticas y responsables.
En nuestro debe como analistas de datos nos comprometemos a ser justos con los datos de una empresa. Esto implica garantizar la confidencialidad de la información sensible, utilizar métodos y técnicas éticas en el análisis, y presentar los resultados de manera transparente y comprensible. Además, nos comprometemos a cuestionar cualquier práctica que pueda comprometer la integridad de los datos o el análisis, abogando siempre por la toma de decisiones éticas y responsables.
En nuestro debe como analistas de datos nos comprometemos a ser justos con los datos de una empresa. Esto implica garantizar la confidencialidad de la información sensible, utilizar métodos y técnicas éticas en el análisis, y presentar los resultados de manera transparente y comprensible. Además, nos comprometemos a cuestionar cualquier práctica que pueda comprometer la integridad de los datos o el análisis, abogando siempre por la toma de decisiones éticas y responsables.
Johnson, R. (2018). “Ethics in Data Science: An Introduction.” O’Reilly Media.
Davenport, T., & Harris, J. (2017). “Competing on Analytics: Updated, with a New Introduction.” Harvard Business Review Press.
Diakopoulos, N. (2016). “Data Ethics and the Role of Data Science in the Fourth Industrial Revolution.” Journal of Data Science, 14(4), 553-562.