Extraacción y Manipulación de datos

Introducción

Contexto

American Airlines busca mejorar su posición competitiva en el mercado, pero para ello debe de analizar a detalle a sus competidores y asegurarse de estar en las primeras posiciones de liderazgo dentro de dicho mercado. Nuestra empresa en Inteligencia de Negocios, brindará a la compañía un análisis detallado sobre factores clave para las aerolíneas, entre ellos, los descriptivos de las distancias recorridas, tráfico aéreo, carriles, tiempo de vuelo, destino y origen de los vuelos de cada aerolínea. Este análisis se realizará haciendo uso de comandos pertenecientes a la librería nycflights13, instalada en nuestro software de análisis, en la cual encontramos la paquetería tidyverse, que incluye los paquetes tibble, tidyr, dplyr, este último nos permite cambiar los objetos de datos y obtener resúmenes de los objetos de datos, simplificando la información para su análisis.

Desarrollo

Exploración del Data Frame

1. Consulta los data frame Airlines, airports, , weather, airlines. Para comenzar nuestro análisis y obtener una descripción general, haremos una exploración en cada una de las cinco data frames que componen nuestra base de datos implementando comandos descriptivos, entre ellos, data() - Llama a la base de datos para su manipulación str() - Descripción del data frame para saber cantidad de columnas, filas y tipos de variables ncol() - Conocer el número de columnas de un data frame nrow() - Conocer el número de filas de un data frame dim() - Conocer las dimensiones (filas, columnas) de un data frame View() - Abrir una ventana externa o gráfica para observar la tabla completa head() - Primeros 6 filas de un data.frame tail() - Últimas 6 filas de un data.frame summary() - Muestra estadísticas de cada columna

Data frame “Flights”

library(nycflights13)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats   1.0.0     ✔ stringr   1.5.0
## ✔ lubridate 1.9.2     ✔ tibble    3.2.1
## ✔ purrr     1.0.2     ✔ tidyr     1.3.0
## ✔ readr     2.1.4
## ── 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
data.frame("flights")
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" ...

Tipos de variables, núm - numeric, int - integer, chr - character.

ncol(flights)
## [1] 19
nrow(flights)
## [1] 336776
dim(flights)
## [1] 336776     19
View(flights)
head(flights)
tail(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  
## 

Data frame “Airports”

data.frame("airports")
str(airports)
## tibble [1,458 × 8] (S3: tbl_df/tbl/data.frame)
##  $ faa  : chr [1:1458] "04G" "06A" "06C" "06N" ...
##  $ name : chr [1:1458] "Lansdowne Airport" "Moton Field Municipal Airport" "Schaumburg Regional" "Randall Airport" ...
##  $ lat  : num [1:1458] 41.1 32.5 42 41.4 31.1 ...
##  $ lon  : num [1:1458] -80.6 -85.7 -88.1 -74.4 -81.4 ...
##  $ alt  : num [1:1458] 1044 264 801 523 11 ...
##  $ tz   : num [1:1458] -5 -6 -6 -5 -5 -5 -5 -5 -5 -8 ...
##  $ dst  : chr [1:1458] "A" "A" "A" "A" ...
##  $ tzone: chr [1:1458] "America/New_York" "America/Chicago" "America/Chicago" "America/New_York" ...
##  - attr(*, "spec")=
##   .. cols(
##   ..   id = col_double(),
##   ..   name = col_character(),
##   ..   city = col_character(),
##   ..   country = col_character(),
##   ..   faa = col_character(),
##   ..   icao = col_character(),
##   ..   lat = col_double(),
##   ..   lon = col_double(),
##   ..   alt = col_double(),
##   ..   tz = col_double(),
##   ..   dst = col_character(),
##   ..   tzone = col_character()
##   .. )

Tipos de datos, num - numeric, chr - character,

ncol(airports)
## [1] 8
nrow(airports)
## [1] 1458
dim(airports)
## [1] 1458    8
View(airports)
head(airports)
tail(airports)
summary(airports)
##      faa                name                lat             lon         
##  Length:1458        Length:1458        Min.   :19.72   Min.   :-176.65  
##  Class :character   Class :character   1st Qu.:34.26   1st Qu.:-119.19  
##  Mode  :character   Mode  :character   Median :40.09   Median : -94.66  
##                                        Mean   :41.65   Mean   :-103.39  
##                                        3rd Qu.:45.07   3rd Qu.: -82.52  
##                                        Max.   :72.27   Max.   : 174.11  
##       alt                tz              dst               tzone          
##  Min.   : -54.00   Min.   :-10.000   Length:1458        Length:1458       
##  1st Qu.:  70.25   1st Qu.: -8.000   Class :character   Class :character  
##  Median : 473.00   Median : -6.000   Mode  :character   Mode  :character  
##  Mean   :1001.42   Mean   : -6.519                                        
##  3rd Qu.:1062.50   3rd Qu.: -5.000                                        
##  Max.   :9078.00   Max.   :  8.000

Data frame “weather”

data.frame("weather")
str(weather)
## tibble [26,115 × 15] (S3: tbl_df/tbl/data.frame)
##  $ origin    : chr [1:26115] "EWR" "EWR" "EWR" "EWR" ...
##  $ year      : int [1:26115] 2013 2013 2013 2013 2013 2013 2013 2013 2013 2013 ...
##  $ month     : int [1:26115] 1 1 1 1 1 1 1 1 1 1 ...
##  $ day       : int [1:26115] 1 1 1 1 1 1 1 1 1 1 ...
##  $ hour      : int [1:26115] 1 2 3 4 5 6 7 8 9 10 ...
##  $ temp      : num [1:26115] 39 39 39 39.9 39 ...
##  $ dewp      : num [1:26115] 26.1 27 28 28 28 ...
##  $ humid     : num [1:26115] 59.4 61.6 64.4 62.2 64.4 ...
##  $ wind_dir  : num [1:26115] 270 250 240 250 260 240 240 250 260 260 ...
##  $ wind_speed: num [1:26115] 10.36 8.06 11.51 12.66 12.66 ...
##  $ wind_gust : num [1:26115] NA NA NA NA NA NA NA NA NA NA ...
##  $ precip    : num [1:26115] 0 0 0 0 0 0 0 0 0 0 ...
##  $ pressure  : num [1:26115] 1012 1012 1012 1012 1012 ...
##  $ visib     : num [1:26115] 10 10 10 10 10 10 10 10 10 10 ...
##  $ time_hour : POSIXct[1:26115], format: "2013-01-01 01:00:00" "2013-01-01 02:00:00" ...

Tipos de variables, núm - numeric, int - integer, chr - character.

ncol(weather)
## [1] 15
nrow(weather)
## [1] 26115
dim(weather)
## [1] 26115    15
View(weather)
  head(weather)
tail(weather)
summary(weather)
##     origin               year          month             day       
##  Length:26115       Min.   :2013   Min.   : 1.000   Min.   : 1.00  
##  Class :character   1st Qu.:2013   1st Qu.: 4.000   1st Qu.: 8.00  
##  Mode  :character   Median :2013   Median : 7.000   Median :16.00  
##                     Mean   :2013   Mean   : 6.504   Mean   :15.68  
##                     3rd Qu.:2013   3rd Qu.: 9.000   3rd Qu.:23.00  
##                     Max.   :2013   Max.   :12.000   Max.   :31.00  
##                                                                    
##       hour            temp             dewp           humid       
##  Min.   : 0.00   Min.   : 10.94   Min.   :-9.94   Min.   : 12.74  
##  1st Qu.: 6.00   1st Qu.: 39.92   1st Qu.:26.06   1st Qu.: 47.05  
##  Median :11.00   Median : 55.40   Median :42.08   Median : 61.79  
##  Mean   :11.49   Mean   : 55.26   Mean   :41.44   Mean   : 62.53  
##  3rd Qu.:17.00   3rd Qu.: 69.98   3rd Qu.:57.92   3rd Qu.: 78.79  
##  Max.   :23.00   Max.   :100.04   Max.   :78.08   Max.   :100.00  
##                  NA's   :1        NA's   :1       NA's   :1       
##     wind_dir       wind_speed         wind_gust         precip        
##  Min.   :  0.0   Min.   :   0.000   Min.   :16.11   Min.   :0.000000  
##  1st Qu.:120.0   1st Qu.:   6.905   1st Qu.:20.71   1st Qu.:0.000000  
##  Median :220.0   Median :  10.357   Median :24.17   Median :0.000000  
##  Mean   :199.8   Mean   :  10.518   Mean   :25.49   Mean   :0.004469  
##  3rd Qu.:290.0   3rd Qu.:  13.809   3rd Qu.:28.77   3rd Qu.:0.000000  
##  Max.   :360.0   Max.   :1048.361   Max.   :66.75   Max.   :1.210000  
##  NA's   :460     NA's   :4          NA's   :20778                     
##     pressure          visib          time_hour                    
##  Min.   : 983.8   Min.   : 0.000   Min.   :2013-01-01 01:00:00.0  
##  1st Qu.:1012.9   1st Qu.:10.000   1st Qu.:2013-04-01 21:30:00.0  
##  Median :1017.6   Median :10.000   Median :2013-07-01 14:00:00.0  
##  Mean   :1017.9   Mean   : 9.255   Mean   :2013-07-01 18:26:37.7  
##  3rd Qu.:1023.0   3rd Qu.:10.000   3rd Qu.:2013-09-30 13:00:00.0  
##  Max.   :1042.1   Max.   :10.000   Max.   :2013-12-30 18:00:00.0  
##  NA's   :2729

Data frame “planes”

data.frame("planes")
str(planes)
## tibble [3,322 × 9] (S3: tbl_df/tbl/data.frame)
##  $ tailnum     : chr [1:3322] "N10156" "N102UW" "N103US" "N104UW" ...
##  $ year        : int [1:3322] 2004 1998 1999 1999 2002 1999 1999 1999 1999 1999 ...
##  $ type        : chr [1:3322] "Fixed wing multi engine" "Fixed wing multi engine" "Fixed wing multi engine" "Fixed wing multi engine" ...
##  $ manufacturer: chr [1:3322] "EMBRAER" "AIRBUS INDUSTRIE" "AIRBUS INDUSTRIE" "AIRBUS INDUSTRIE" ...
##  $ model       : chr [1:3322] "EMB-145XR" "A320-214" "A320-214" "A320-214" ...
##  $ engines     : int [1:3322] 2 2 2 2 2 2 2 2 2 2 ...
##  $ seats       : int [1:3322] 55 182 182 182 55 182 182 182 182 182 ...
##  $ speed       : int [1:3322] NA NA NA NA NA NA NA NA NA NA ...
##  $ engine      : chr [1:3322] "Turbo-fan" "Turbo-fan" "Turbo-fan" "Turbo-fan" ...

Tipos de variables, int - integer, chr - character.

ncol(planes)
## [1] 9
nrow(planes)
## [1] 3322
dim(planes)
## [1] 3322    9
View(planes)
head(planes)
tail(planes)
summary(planes)
##    tailnum               year          type           manufacturer      
##  Length:3322        Min.   :1956   Length:3322        Length:3322       
##  Class :character   1st Qu.:1997   Class :character   Class :character  
##  Mode  :character   Median :2001   Mode  :character   Mode  :character  
##                     Mean   :2000                                        
##                     3rd Qu.:2005                                        
##                     Max.   :2013                                        
##                     NA's   :70                                          
##     model              engines          seats           speed      
##  Length:3322        Min.   :1.000   Min.   :  2.0   Min.   : 90.0  
##  Class :character   1st Qu.:2.000   1st Qu.:140.0   1st Qu.:107.5  
##  Mode  :character   Median :2.000   Median :149.0   Median :162.0  
##                     Mean   :1.995   Mean   :154.3   Mean   :236.8  
##                     3rd Qu.:2.000   3rd Qu.:182.0   3rd Qu.:432.0  
##                     Max.   :4.000   Max.   :450.0   Max.   :432.0  
##                                                     NA's   :3299   
##     engine         
##  Length:3322       
##  Class :character  
##  Mode  :character  
##                    
##                    
##                    
## 

Data frame “airlines”

data.frame("airlines")
str(airlines)
## tibble [16 × 2] (S3: tbl_df/tbl/data.frame)
##  $ carrier: chr [1:16] "9E" "AA" "AS" "B6" ...
##  $ name   : chr [1:16] "Endeavor Air Inc." "American Airlines Inc." "Alaska Airlines Inc." "JetBlue Airways" ...

Tipos de variables, chr - character.

ncol(airlines)
## [1] 2
nrow(airlines)
## [1] 16
dim(airlines)
## [1] 16  2
View(airlines)
head(airlines)
tail(airlines)
summary(airlines)
##    carrier              name          
##  Length:16          Length:16         
##  Class :character   Class :character  
##  Mode  :character   Mode  :character

Manipulación de datos

2. Consulta el data frame flights para recordar su contenido.

Función: View()

print(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>

3. Consulta de los descriptivos de las distancias.

descripcion <- select(flights, distance) 
descripcion
summary(descripcion)
##     distance   
##  Min.   :  17  
##  1st Qu.: 502  
##  Median : 872  
##  Mean   :1040  
##  3rd Qu.:1389  
##  Max.   :4983

Summary nos permite conocer la distancia mínima recorrida por las aerolíneas en todos los vuelos la cual es 17 millas, así mismos podemos conocer estadísticos como la media que es el promedio de las distancias recorridas y la mediana que nos ayuda a entender el comportamiento de los datos. Por último tenemos la distancia máxima recorrida, equivalente a 4983 millas.

Encontrando aerolíneas que han recorrido más distancia (en millas).

4. Consulta para encontrar la suma y la media de las distancias recorridas por aerolínea

distancias <- flights %>% group_by(carrier) %>%
 
summarize(suma = sum(distance, na.rm = TRUE), media = mean(distance, na.rm = TRUE))
print(distancias)
## # A tibble: 16 × 3
##    carrier     suma media
##    <chr>      <dbl> <dbl>
##  1 9E       9788152  530.
##  2 AA      43864584 1340.
##  3 AS       1715028 2402 
##  4 B6      58384137 1069.
##  5 DL      59507317 1237.
##  6 EV      30498951  563.
##  7 F9       1109700 1620 
##  8 FL       2167344  665.
##  9 HA       1704186 4983 
## 10 MQ      15033955  570.
## 11 OO         16026  501.
## 12 UA      89705524 1529.
## 13 US      11365778  553.
## 14 VX      12902327 2499.
## 15 WN      12229203  996.
## 16 YV        225395  375.

Trabajamos con el dataframe de (flights) para poder obtener la suma y la media de las distancias recorridas, haciendo una limpieza de los valores que no contienen información o están perdidos, dejando los valores significantes en nuestra nueva dataframe, la cual se llamará (distancias) y podemos encontrar en ella por carrier, la distancia y media recorridos. Los hallazgos que encontramos para American Airlines es una suma de 43864584 millas recorridas y un promedio de 1340.2360 millas.

5. Consulta para calcular la media de distancias para filtrar

mediatotal <- mean(distancias$suma, na.rm = TRUE) 
print(mediatotal)
## [1] 21888600

Ahora que contamos con nuestra dataframe (distancias), nos interesa obtener la media de todas las sumas de las distancias recorridas por carrier, por ello, nombramos a nuestra función (mediatotal) y guardamos nuestro cálculo de la media al igual que la limpieza de nuestros datos, así nuestra (mediatotal) será más exacta.

6. Consulta para filtrar las aerolíneas con suma de distancia superior a la media.

filtroaero <- distancias %>% 
filter(suma > mediatotal) 
print(filtroaero)
## # A tibble: 5 × 3
##   carrier     suma media
##   <chr>      <dbl> <dbl>
## 1 AA      43864584 1340.
## 2 B6      58384137 1069.
## 3 DL      59507317 1237.
## 4 EV      30498951  563.
## 5 UA      89705524 1529.

Finalmente conocemos la (mediatotal) con la cual podemos filtrar las aerolineas usando la suma total de distancias recorridas. Nuestro filtro selecciona sólo aquellas que se encuentren por arriba de la (mediatotal). Los datos resultantes los guardamos en un nuevo dataframe llamado (filtroaero). Los datos nos muestran que American Airlines se encuentra dentro de las aerolíneas que recorrieron una distancia total por arriba de la media, con una suma total 43864584 y una media total de 1340.2360.

7. Consulta para filtrar el data frame flights por las aerolíneas filtradas y selección de las columnas carrier, distance, origin, dest para un nuevo dataframe.

finalaero <- flights %>%
  filter(carrier %in% filtroaero$carrier) %>%
  select(carrier, distance, origin, dest) %>%
  arrange(desc(distance))
print(finalaero)
## # A tibble: 248,312 × 4
##    carrier distance origin dest 
##    <chr>      <dbl> <chr>  <chr>
##  1 UA          4963 EWR    HNL  
##  2 UA          4963 EWR    HNL  
##  3 UA          4963 EWR    HNL  
##  4 UA          4963 EWR    HNL  
##  5 UA          4963 EWR    HNL  
##  6 UA          4963 EWR    HNL  
##  7 UA          4963 EWR    HNL  
##  8 UA          4963 EWR    HNL  
##  9 UA          4963 EWR    HNL  
## 10 UA          4963 EWR    HNL  
## # ℹ 248,302 more rows

Ahora para visualizar más a detalle las aerolíneas que han recorrido una distancia superior a la (mediatotal), seleccionamos del dataframe (flights) los campos carrier, distance, origin, dest en forma descendente por distance. A esta nueva dataframe la llamamos (finalaero) y solicitamos su visualización para asegurar que contenga los datos solicitados. Esta tabla nos permite conocer todos los vuelos que realizó American Airlines y todas las aerolíneas que están por arriba de la media total.

Identificando aerolíneas líderes en New York

8. Consulta para identificar 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) . Generando un data frame para cada aeropuerto.

Llegamos a la parte más importante para nuestra empresa, conocer las compañías líderes en el los aeropuertos de Nueva York, ciudad principal donde operan. Para obtener las compañías en el top, seguiremos los mismos pasos por cada aeropuerto. 1. Nombrar nuestra nueva dataframe con las iniciales del aeropuerto 2. Filtrar el origen de cada vuelo 3. Agrupar la información por carril 4. Contar los datos que pasen el filtro y acomodarlos de manera descendente. 5. Renombrar el campo n por n.flights 6. Obtener solo los primeros 6 resultados (EL TOP QUE BUSCAMOS!)

Top aerolineas x aeropuerto

JFK <- flights %>%
  filter(origin == "JFK") %>% 
  group_by(carrier) %>% 
  count() %>% 
  arrange(desc(n)) %>% 
  rename(n.flights = n) %>%
  head()

print(JFK) 
## # A tibble: 6 × 2
## # Groups:   carrier [6]
##   carrier n.flights
##   <chr>       <int>
## 1 B6          42076
## 2 DL          20701
## 3 9E          14651
## 4 AA          13783
## 5 MQ           7193
## 6 UA           4534

B6 JetBlue Airways se encuentra en la primera posición del top con 42076 vuelos - Aeropuerto LaGuardia

American Airlines se encuentra en la cuarta posición del top con 13783 vuelos - Aeropuerto John F. Kennedy

LGA <- flights %>%
  filter(origin == "LGA") %>% 
  group_by(carrier) %>% 
  count() %>% 
  arrange(desc(n)) %>% 
  rename(n.flights = n) %>%
  head()

print(LGA) 
## # A tibble: 6 × 2
## # Groups:   carrier [6]
##   carrier n.flights
##   <chr>       <int>
## 1 DL          23067
## 2 MQ          16928
## 3 AA          15459
## 4 US          13136
## 5 EV           8826
## 6 UA           8044

Delta Air Lines Inc. se encuentra en la primera posición del top con 23067 vuelos- Aeropuerto LaGuardia

American Airlines se encuentra en la tercera posición del top con 15459 vuelos- Aeropuerto LaGuardia

EWR <- flights %>%
  filter(origin == "EWR") %>% 
  group_by(carrier) %>% 
  count() %>% 
  arrange(desc(n)) %>% 
  rename(n.flights = n) %>%
  head()

print(EWR) 
## # A tibble: 6 × 2
## # Groups:   carrier [6]
##   carrier n.flights
##   <chr>       <int>
## 1 UA          46087
## 2 EV          43939
## 3 B6           6557
## 4 WN           6188
## 5 US           4405
## 6 DL           4342

United Air Lines Inc. se encuentra en la primera posición del top con 46087 vuelos- Aeropuerto LaGuardia

American Airlines no se encuentra dentro de los primeros seis lugares - Aeropuerto Newark Liberty

Conclusión

Los hallazgos más importantes de nuestro reporte fueron, American Airlines tiene una suma de distancia total de 43864584 millas y un promedio de 1340.2360 millas, lo que posiciona a la compañía dentro de las empresas que se encuentran por arriba de la media total de millas recorridas equivalente a 21888600 millas. Dentro del mercado American Airlines sólo lidera dos de tres aeropuertos en la ciudad de New York. En aeropuerto de Aeropuerto, LaGuardia, se encuentra en la tercera posición con 15459 vuelos. Seguido del Aeropuerto, John F. Kennedy, en la cuarta posición con 13783 vuelos. Por último en el Aeropuerto, Newark Liberty, no se encuentra dentro de ninguna de las seis primeras posiciones. Siendo sus competidores más fuertes JetBlue Airways, United Air Lines Inc. y Delta Air Lines Inc. Estos resultados nos muestran una área de oportunidad, pues la compañía además de enfocar su atención en subir de posición en los primeros dos aeropuertos, tiene el reto de posicionarse en el top dentro del último aeropuerto. Eso es lo que nos permite la manipulación y analitica de datos, entender de dónde venimos y encaminarnos a donde deseamos ir como empresa al comprender los datos que generamos en las operaciones diarias de la empresa.

Bibliografía de referencias

Wickham, H. and Grolemund, G. (2017) R for Data Science: Import, Tidy, Transform, Visualize, and Model Data O’Reilly Media: Sebastopol, California

Nycflights13 v1.0.0 https://www.rdocumentation.org/packages/nycflights13/versions/1.0.0