##Situacion Problema ¿Cómo mejorar la posición competitiva de una de las aerolíneas líderes en los aeropuertos de Nueva York?

##Exploración
Te estás iniciando en la industria de la aviación, es importante y necesario que conozcas la base de datos del sistema administrativo del aeropuerto y para ello tendrás que explorarla e identificar las variables que la forman y sus tipos. El análisis exploratorio deberá incluir algunos resultados descriptivos. La base de datos se encuentra en el paquete library(nycflights13) y está formada por 5 data frames.

 library(nycflights13)

Base de Datos 1 - Airlines

summary(airlines)
##    carrier              name          
##  Length:16          Length:16         
##  Class :character   Class :character  
##  Mode  :character   Mode  :character
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" ...
data(airlines)
ncol(airlines)
## [1] 2
nrow(airlines)
## [1] 16
dim(airlines)
## [1] 16  2
head(airlines)
## # A tibble: 6 × 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.
tail(airlines)
## # A tibble: 6 × 2
##   carrier name                  
##   <chr>   <chr>                 
## 1 OO      SkyWest Airlines Inc. 
## 2 UA      United Air Lines Inc. 
## 3 US      US Airways Inc.       
## 4 VX      Virgin America        
## 5 WN      Southwest Airlines Co.
## 6 YV      Mesa Airlines Inc.

Base de Datos 2 - Aeropuertos

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
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")=List of 3
##   ..$ cols   :List of 12
##   .. ..$ id     : list()
##   .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
##   .. ..$ name   : list()
##   .. .. ..- attr(*, "class")= chr [1:2] "collector_character" "collector"
##   .. ..$ city   : list()
##   .. .. ..- attr(*, "class")= chr [1:2] "collector_character" "collector"
##   .. ..$ country: list()
##   .. .. ..- attr(*, "class")= chr [1:2] "collector_character" "collector"
##   .. ..$ faa    : list()
##   .. .. ..- attr(*, "class")= chr [1:2] "collector_character" "collector"
##   .. ..$ icao   : list()
##   .. .. ..- attr(*, "class")= chr [1:2] "collector_character" "collector"
##   .. ..$ lat    : list()
##   .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
##   .. ..$ lon    : list()
##   .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
##   .. ..$ alt    : list()
##   .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
##   .. ..$ tz     : list()
##   .. .. ..- attr(*, "class")= chr [1:2] "collector_double" "collector"
##   .. ..$ dst    : list()
##   .. .. ..- attr(*, "class")= chr [1:2] "collector_character" "collector"
##   .. ..$ tzone  : list()
##   .. .. ..- attr(*, "class")= chr [1:2] "collector_character" "collector"
##   ..$ default: list()
##   .. ..- attr(*, "class")= chr [1:2] "collector_guess" "collector"
##   ..$ skip   : num 0
##   ..- attr(*, "class")= chr "col_spec"
data(airports)
ncol(airports)
## [1] 8
nrow(airports)
## [1] 1458
dim(airports)
## [1] 1458    8
head(airports)
## # A tibble: 6 × 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/Ne…
## 2 06A   Moton Field Municipal Airport   32.5 -85.7   264    -6 A     America/Ch…
## 3 06C   Schaumburg Regional             42.0 -88.1   801    -6 A     America/Ch…
## 4 06N   Randall Airport                 41.4 -74.4   523    -5 A     America/Ne…
## 5 09J   Jekyll Island Airport           31.1 -81.4    11    -5 A     America/Ne…
## 6 0A9   Elizabethton Municipal Airport  36.4 -82.2  1593    -5 A     America/Ne…
tail(airports)
## # A tibble: 6 × 8
##   faa   name                        lat    lon   alt    tz dst   tzone          
##   <chr> <chr>                     <dbl>  <dbl> <dbl> <dbl> <chr> <chr>          
## 1 ZTY   Boston Back Bay Station    42.3  -71.1    20    -5 A     America/New_Yo…
## 2 ZUN   Black Rock                 35.1 -109.   6454    -7 A     America/Denver 
## 3 ZVE   New Haven Rail Station     41.3  -72.9     7    -5 A     America/New_Yo…
## 4 ZWI   Wilmington Amtrak Station  39.7  -75.6     0    -5 A     America/New_Yo…
## 5 ZWU   Washington Union Station   38.9  -77.0    76    -5 A     America/New_Yo…
## 6 ZYP   Penn Station               40.8  -74.0    35    -5 A     America/New_Yo…

Base de Datos 3 - 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  
## 
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" ...
data(flights)
ncol(flights)
## [1] 19
nrow(flights)
## [1] 336776
dim(flights)
## [1] 336776     19
head(flights)
## # A tibble: 6 × 19
##    year month   day dep_time sched_dep…¹ dep_d…² arr_t…³ sched…⁴ arr_d…⁵ carrier
##   <int> <int> <int>    <int>       <int>   <dbl>   <int>   <int>   <dbl> <chr>  
## 1  2013     1     1      517         515       2     830     819      11 UA     
## 2  2013     1     1      533         529       4     850     830      20 UA     
## 3  2013     1     1      542         540       2     923     850      33 AA     
## 4  2013     1     1      544         545      -1    1004    1022     -18 B6     
## 5  2013     1     1      554         600      -6     812     837     -25 DL     
## 6  2013     1     1      554         558      -4     740     728      12 UA     
## # … with 9 more variables: flight <int>, tailnum <chr>, origin <chr>,
## #   dest <chr>, air_time <dbl>, distance <dbl>, hour <dbl>, minute <dbl>,
## #   time_hour <dttm>, and abbreviated variable names ¹​sched_dep_time,
## #   ²​dep_delay, ³​arr_time, ⁴​sched_arr_time, ⁵​arr_delay
tail(flights)
## # A tibble: 6 × 19
##    year month   day dep_time sched_dep…¹ dep_d…² arr_t…³ sched…⁴ arr_d…⁵ carrier
##   <int> <int> <int>    <int>       <int>   <dbl>   <int>   <int>   <dbl> <chr>  
## 1  2013     9    30       NA        1842      NA      NA    2019      NA EV     
## 2  2013     9    30       NA        1455      NA      NA    1634      NA 9E     
## 3  2013     9    30       NA        2200      NA      NA    2312      NA 9E     
## 4  2013     9    30       NA        1210      NA      NA    1330      NA MQ     
## 5  2013     9    30       NA        1159      NA      NA    1344      NA MQ     
## 6  2013     9    30       NA         840      NA      NA    1020      NA MQ     
## # … with 9 more variables: flight <int>, tailnum <chr>, origin <chr>,
## #   dest <chr>, air_time <dbl>, distance <dbl>, hour <dbl>, minute <dbl>,
## #   time_hour <dttm>, and abbreviated variable names ¹​sched_dep_time,
## #   ²​dep_delay, ³​arr_time, ⁴​sched_arr_time, ⁵​arr_delay

Base de Datos 4 - 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  
##                    
##                    
##                    
## 
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" ...
data(planes)
ncol(planes)
## [1] 9
nrow(planes)
## [1] 3322
dim(planes)
## [1] 3322    9
head(planes)
## # A tibble: 6 × 9
##   tailnum  year type                    manuf…¹ model engines seats speed engine
##   <chr>   <int> <chr>                   <chr>   <chr>   <int> <int> <int> <chr> 
## 1 N10156   2004 Fixed wing multi engine EMBRAER EMB-…       2    55    NA Turbo…
## 2 N102UW   1998 Fixed wing multi engine AIRBUS… A320…       2   182    NA Turbo…
## 3 N103US   1999 Fixed wing multi engine AIRBUS… A320…       2   182    NA Turbo…
## 4 N104UW   1999 Fixed wing multi engine AIRBUS… A320…       2   182    NA Turbo…
## 5 N10575   2002 Fixed wing multi engine EMBRAER EMB-…       2    55    NA Turbo…
## 6 N105UW   1999 Fixed wing multi engine AIRBUS… A320…       2   182    NA Turbo…
## # … with abbreviated variable name ¹​manufacturer
tail(planes)
## # A tibble: 6 × 9
##   tailnum  year type                    manuf…¹ model engines seats speed engine
##   <chr>   <int> <chr>                   <chr>   <chr>   <int> <int> <int> <chr> 
## 1 N996DL   1991 Fixed wing multi engine MCDONN… MD-88       2   142    NA Turbo…
## 2 N997AT   2002 Fixed wing multi engine BOEING  717-…       2   100    NA Turbo…
## 3 N997DL   1992 Fixed wing multi engine MCDONN… MD-88       2   142    NA Turbo…
## 4 N998AT   2002 Fixed wing multi engine BOEING  717-…       2   100    NA Turbo…
## 5 N998DL   1992 Fixed wing multi engine MCDONN… MD-88       2   142    NA Turbo…
## 6 N999DN   1992 Fixed wing multi engine MCDONN… MD-88       2   142    NA Turbo…
## # … with abbreviated variable name ¹​manufacturer

Base de Datos 5 - 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
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" ...
data(weather)
ncol(weather)
## [1] 15
nrow(weather)
## [1] 26115
dim(weather)
## [1] 26115    15
head(weather)
## # A tibble: 6 × 15
##   origin  year month   day  hour  temp  dewp humid wind_dir wind_speed wind_gust
##   <chr>  <int> <int> <int> <int> <dbl> <dbl> <dbl>    <dbl>      <dbl>     <dbl>
## 1 EWR     2013     1     1     1  39.0  26.1  59.4      270      10.4         NA
## 2 EWR     2013     1     1     2  39.0  27.0  61.6      250       8.06        NA
## 3 EWR     2013     1     1     3  39.0  28.0  64.4      240      11.5         NA
## 4 EWR     2013     1     1     4  39.9  28.0  62.2      250      12.7         NA
## 5 EWR     2013     1     1     5  39.0  28.0  64.4      260      12.7         NA
## 6 EWR     2013     1     1     6  37.9  28.0  67.2      240      11.5         NA
## # … with 4 more variables: precip <dbl>, pressure <dbl>, visib <dbl>,
## #   time_hour <dttm>
tail(weather)
## # A tibble: 6 × 15
##   origin  year month   day  hour  temp  dewp humid wind_dir wind_speed wind_gust
##   <chr>  <int> <int> <int> <int> <dbl> <dbl> <dbl>    <dbl>      <dbl>     <dbl>
## 1 LGA     2013    12    30    13  37.0  21.9  54.0      340       17.3      20.7
## 2 LGA     2013    12    30    14  36.0  19.9  51.8      340       13.8      21.9
## 3 LGA     2013    12    30    15  34.0  17.1  49.5      330       17.3      21.9
## 4 LGA     2013    12    30    16  32    15.1  49.2      340       15.0      23.0
## 5 LGA     2013    12    30    17  30.9  12.9  46.7      320       17.3      NA  
## 6 LGA     2013    12    30    18  28.9  10.9  46.4      330       18.4      NA  
## # … with 4 more variables: precip <dbl>, pressure <dbl>, visib <dbl>,
## #   time_hour <dttm>

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

  • integer contiene enteros, por ejemplo: year.
  • double contiene números reales, por ejemplo lat
  • character contiene texto, por ejemplo: carrier
  • dttm contiene fecha y tiempo, por ejemplo: time_hour

Hallazgos
Mediante la exploración de datos se identificó que las aerolíneas principales son 9E, AA y AS; los aeropuertos primordiales son Lansdowne Airport, Moton Field Municipal Airport y Schaumburg Regional. Asimismo, el tiempo promedio que el avión está en el aire es de 150.7, la velocidad promedio es 236.8, a visibilidad promedio es de 9.3 y la distancia promedio es de 1040mi. Tambié, se puede observar las variables con NaN e identificar si tenemos preguntas antes de la manipulación.

##Manipulación de datos
Se te ha solicitado consultar cuáles son las aerolíneas de mayor tráfico aéreo en origen y destino. Cuentas con un data frame llamado flights que contiene toda la información de los vuelos de todos los aeropuertos de New York. Para lograrlo considera las funciones sugeridas en los siguientes pasos:

Consulta el data frame flights para recordar su contenido:

# view(flights)

Encuentra los datos descriptivos del data frame flights. Identifica la media de las distancias recorridas en millas

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  
## 

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 recorrido una distancia superior a la media, se desean ver los campos carrier, distance, origin, dest en forma descendente por distance.

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
mas_distancia <- select(flights,carrier, distance, origin, dest)
head(mas_distancia)
## # A tibble: 6 × 4
##   carrier distance origin dest 
##   <chr>      <dbl> <chr>  <chr>
## 1 UA          1400 EWR    IAH  
## 2 UA          1416 LGA    IAH  
## 3 AA          1089 JFK    MIA  
## 4 B6          1576 JFK    BQN  
## 5 DL           762 LGA    ATL  
## 6 UA           719 EWR    ORD
mayor_media <- filter(mas_distancia, distance>1040)
head(mayor_media)
## # A tibble: 6 × 4
##   carrier distance origin dest 
##   <chr>      <dbl> <chr>  <chr>
## 1 UA          1400 EWR    IAH  
## 2 UA          1416 LGA    IAH  
## 3 AA          1089 JFK    MIA  
## 4 B6          1576 JFK    BQN  
## 5 B6          1065 EWR    FLL  
## 6 UA          2475 JFK    LAX
orden <- arrange (mayor_media,desc(distance))
head(orden)
## # A tibble: 6 × 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
count(orden,carrier,sort=TRUE)
## # A tibble: 13 × 2
##    carrier     n
##    <chr>   <int>
##  1 UA      39294
##  2 B6      24426
##  3 AA      23190
##  4 DL      21637
##  5 VX       5162
##  6 EV       3991
##  7 WN       3832
##  8 US       2271
##  9 9E       1377
## 10 MQ        744
## 11 AS        714
## 12 F9        685
## 13 HA        342

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.

distancias <- orden %>% group_by(carrier,origin,distance) %>%
  summarize(suma_distancia=sum(distance, na.rm=TRUE), promedio_distancia=mean(distance, na.rm = TRUE))
## `summarise()` has grouped output by 'carrier', 'origin'. You can override using
## the `.groups` argument.
distancias
## # A tibble: 150 × 5
## # Groups:   carrier, origin [26]
##    carrier origin distance suma_distancia promedio_distancia
##    <chr>   <chr>     <dbl>          <dbl>              <dbl>
##  1 9E      JFK        1113         307188               1113
##  2 9E      JFK        1182         515352               1182
##  3 9E      JFK        1391         507715               1391
##  4 9E      JFK        1521           3042               1521
##  5 9E      JFK        1587          84111               1587
##  6 9E      LGA        1047          81666               1047
##  7 9E      LGA        1080          72360               1080
##  8 9E      LGA        1107          94095               1107
##  9 9E      LGA        1183           1183               1183
## 10 9E      LGA        1389          19446               1389
## # … with 140 more rows

Ordena en forma descendente por distancia recorrida

distancias_orden <- arrange(distancias, desc(suma_distancia))
head(distancias_orden)
## # A tibble: 6 × 5
## # Groups:   carrier, origin [5]
##   carrier origin distance suma_distancia promedio_distancia
##   <chr>   <chr>     <dbl>          <dbl>              <dbl>
## 1 UA      EWR        2565       11142360               2565
## 2 UA      EWR        2454        9236856               2454
## 3 AA      JFK        2475        7962075               2475
## 4 AA      LGA        1389        6717204               1389
## 5 UA      JFK        2586        6400350               2586
## 6 DL      JFK        2475        6189975               2475

Observa tus resultados de la ultima tabla y agrega tus interpretaciones
La suma de las distancias representa el total de millas recorridos aludiendo a la capacidad que tiene cada viaje de recorrer cierta distancia. Mientras que, el promedio de distancia denota el valor representativo de cada vuelo acorde al total de distancia recorrida. Con base en esto y la tabla anterior, se observa que la aerolínea UA tiene el viaje que más distancia recorre con un total de 11142360 mi y es la aerolínea que maneja la mayor cantidad de viajes con las distancias más largas. Asimismo, se obtuvo que el aeropuerto EWR cuenta con los dos viajes más largos pero, el aeropuerto JFk tiene mayor cantidad de viajes largos donde el más largo alcanza en promedio una distancia de 2475 millas.

Identifica si las aerolíneas líderes son las mismas en los tres aeropuertos cuyo origen es Nueva York

JFK <- distancias_orden %>%
  filter(origin=="JFK") %>%
  arrange(carrier,desc(suma_distancia))
head(JFK)
## # A tibble: 6 × 5
## # Groups:   carrier, origin [2]
##   carrier origin distance suma_distancia promedio_distancia
##   <chr>   <chr>     <dbl>          <dbl>              <dbl>
## 1 9E      JFK        1182         515352               1182
## 2 9E      JFK        1391         507715               1391
## 3 9E      JFK        1113         307188               1113
## 4 9E      JFK        1587          84111               1587
## 5 9E      JFK        1521           3042               1521
## 6 AA      JFK        2475        7962075               2475
LGA <- distancias_orden %>%
  filter(origin=="LGA") %>%
  arrange(carrier,desc(suma_distancia))
head(LGA)
## # A tibble: 6 × 5
## # Groups:   carrier, origin [2]
##   carrier origin distance suma_distancia promedio_distancia
##   <chr>   <chr>     <dbl>          <dbl>              <dbl>
## 1 9E      LGA        1107          94095               1107
## 2 9E      LGA        1047          81666               1047
## 3 9E      LGA        1080          72360               1080
## 4 9E      LGA        1389          19446               1389
## 5 9E      LGA        1183           1183               1183
## 6 AA      LGA        1389        6717204               1389
EWR <- distancias_orden %>%
  filter(origin=="EWR") %>%
  arrange(carrier,desc(suma_distancia))
head(EWR)
## # A tibble: 6 × 5
## # Groups:   carrier, origin [3]
##   carrier origin distance suma_distancia promedio_distancia
##   <chr>   <chr>     <dbl>          <dbl>              <dbl>
## 1 AA      EWR        1372        2818088               1372
## 2 AA      EWR        1085        1158780               1085
## 3 AA      EWR        2454         895710               2454
## 4 AS      EWR        2402        1715028               2402
## 5 B6      EWR        1065        1476090               1065
## 6 B6      EWR        1608         609432               1608

Observaciones e interpretaciones
Se observa que la aerolínea líder en los aeropuertos JFK y LGA es 9E. Sin embargo, la aerolínea que predomina en la “cabecera” de los tres aeropuertos es la aerolínea AA.

Conclusiones
Con base en lo anterior, se observa que la aerolínea con mayor alcance, es decir, que recorre mayores distancias en más de un aeropuerto concurrido es la AA. No obstante, la aerolínea que recorre distancias mayores a la media es UA y los aeropuertos con mayor número de viajes que recorren distancias mayores a 1040 mi son el JFK y EWR.

Bibliografía
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

LS0tDQp0aXRsZTogIlNpdHVhY2lvbiBQcm9ibGVtYSAxIg0KYXV0aG9yOiAiQXZyaWwgTG9iYXRvIC0gQTAwODMzMTEzIg0KZGF0ZTogIjIwMjMtMDMtMTQiDQpvdXRwdXQ6IA0KICBodG1sX2RvY3VtZW50Og0KICAgIHRvYzogdHJ1ZQ0KICAgIHRvY19mbG9hdDogdHJ1ZQ0KICAgIGNvZGVfZG93bmxvYWQ6IHRydWUNCi0tLQ0KDQo8aW1nIHNyYz0iQzpcXFVzZXJzXFxBVlJJTFxcUGljdHVyZXNcXDE2NzQwODIyNTNfOTkyMTAzXzE2NzQwODI2MDBfbm90aWNpYV9ub3JtYWwuanBnIj4NCg0KIyNTaXR1YWNpb24gUHJvYmxlbWENCsK/Q8OzbW8gbWVqb3JhciBsYSBwb3NpY2nDs24gY29tcGV0aXRpdmEgZGUgdW5hIGRlIGxhcyBhZXJvbMOtbmVhcyBsw61kZXJlcyBlbiBsb3MgYWVyb3B1ZXJ0b3MgZGUgTnVldmEgWW9yaz8NCg0KIyNFeHBsb3JhY2nDs24gIA0KVGUgZXN0w6FzIGluaWNpYW5kbyBlbiBsYSBpbmR1c3RyaWEgZGUgbGEgYXZpYWNpw7NuLCBlcyBpbXBvcnRhbnRlIHkgbmVjZXNhcmlvIHF1ZSBjb25vemNhcyBsYSBiYXNlIGRlIGRhdG9zIGRlbCBzaXN0ZW1hIGFkbWluaXN0cmF0aXZvIGRlbCBhZXJvcHVlcnRvIHkgcGFyYSBlbGxvIHRlbmRyw6FzIHF1ZSBleHBsb3JhcmxhIGUgaWRlbnRpZmljYXIgbGFzIHZhcmlhYmxlcyBxdWUgbGEgZm9ybWFuIHkgc3VzIHRpcG9zLiBFbCBhbsOhbGlzaXMgZXhwbG9yYXRvcmlvIGRlYmVyw6EgaW5jbHVpciBhbGd1bm9zIHJlc3VsdGFkb3MgZGVzY3JpcHRpdm9zLiAgTGEgYmFzZSBkZSBkYXRvcyBzZSBlbmN1ZW50cmEgZW4gZWwgcGFxdWV0ZSBsaWJyYXJ5KG55Y2ZsaWdodHMxMykgeSBlc3TDoSBmb3JtYWRhIHBvciA1IGRhdGEgZnJhbWVzLg0KYGBge3J9DQogbGlicmFyeShueWNmbGlnaHRzMTMpDQpgYGANCg0KKipCYXNlIGRlIERhdG9zIDEgLSBBaXJsaW5lcyoqDQpgYGB7cn0NCnN1bW1hcnkoYWlybGluZXMpDQpzdHIoYWlybGluZXMpDQpkYXRhKGFpcmxpbmVzKQ0KbmNvbChhaXJsaW5lcykNCm5yb3coYWlybGluZXMpDQpkaW0oYWlybGluZXMpDQpoZWFkKGFpcmxpbmVzKQ0KdGFpbChhaXJsaW5lcykNCmBgYA0KDQoqKkJhc2UgZGUgRGF0b3MgMiAtIEFlcm9wdWVydG9zKioNCmBgYHtyfQ0Kc3VtbWFyeShhaXJwb3J0cykNCnN0cihhaXJwb3J0cykNCmRhdGEoYWlycG9ydHMpDQpuY29sKGFpcnBvcnRzKQ0KbnJvdyhhaXJwb3J0cykNCmRpbShhaXJwb3J0cykNCmhlYWQoYWlycG9ydHMpDQp0YWlsKGFpcnBvcnRzKQ0KYGBgDQoNCioqQmFzZSBkZSBEYXRvcyAzIC0gRmxpZ2h0cyoqDQpgYGB7cn0NCnN1bW1hcnkoZmxpZ2h0cykNCnN0cihmbGlnaHRzKQ0KZGF0YShmbGlnaHRzKQ0KbmNvbChmbGlnaHRzKQ0KbnJvdyhmbGlnaHRzKQ0KZGltKGZsaWdodHMpDQpoZWFkKGZsaWdodHMpDQp0YWlsKGZsaWdodHMpDQpgYGANCg0KKipCYXNlIGRlIERhdG9zIDQgLSBQbGFuZXMqKg0KYGBge3J9DQpzdW1tYXJ5KHBsYW5lcykNCnN0cihwbGFuZXMpDQpkYXRhKHBsYW5lcykNCm5jb2wocGxhbmVzKQ0KbnJvdyhwbGFuZXMpDQpkaW0ocGxhbmVzKQ0KaGVhZChwbGFuZXMpDQp0YWlsKHBsYW5lcykNCmBgYA0KDQoqKkJhc2UgZGUgRGF0b3MgNSAtIFdlYXRoZXIqKg0KYGBge3J9DQpzdW1tYXJ5KHdlYXRoZXIpDQpzdHIod2VhdGhlcikNCmRhdGEod2VhdGhlcikNCm5jb2wod2VhdGhlcikNCm5yb3cod2VhdGhlcikNCmRpbSh3ZWF0aGVyKQ0KaGVhZCh3ZWF0aGVyKQ0KdGFpbCh3ZWF0aGVyKQ0KYGBgDQoNCioqSWRlbnRpZmljYSBsb3MgZGlmZXJlbnRlcyB0aXBvcyBkZSBkYXRvcyB5IGV4cGxpY2EgZW4gcXXDqSBjb25zaXN0ZSBjYWRhIHVubyBkZSBlbGxvcyB5IGN1w6FsIGVzIGxhIGRpZmVyZW5jaWEgZW50cmUgdW5vIHkgb3RybywgaW5jbHV5ZW5kbyBsb3Mgc2lndWllbnRlcyB0aXBvcyBkZSBkYXRvczogaW50LCBkYmwsIGNociwgZHR0bSoqICANCg0KKiBpbnRlZ2VyIDxsZ2w+IGNvbnRpZW5lIGVudGVyb3MsIHBvciBlamVtcGxvOiB5ZWFyLiAgDQoqIGRvdWJsZSA8ZGJsPiBjb250aWVuZSBuw7ptZXJvcyByZWFsZXMsIHBvciBlamVtcGxvIGxhdCAgDQoqIGNoYXJhY3RlciAgPGNocj4gY29udGllbmUgdGV4dG8sIHBvciBlamVtcGxvOiBjYXJyaWVyICANCiogZHR0bSBjb250aWVuZSBmZWNoYSB5IHRpZW1wbywgcG9yIGVqZW1wbG86IHRpbWVfaG91ciAgDQoNCl9IYWxsYXpnb3NfICANCk1lZGlhbnRlIGxhIGV4cGxvcmFjacOzbiBkZSBkYXRvcyBzZSBpZGVudGlmaWPDsyBxdWUgbGFzIGFlcm9sw61uZWFzIHByaW5jaXBhbGVzIHNvbiA5RSwgQUEgeSBBUzsgbG9zIGFlcm9wdWVydG9zIHByaW1vcmRpYWxlcyBzb24gTGFuc2Rvd25lIEFpcnBvcnQsIE1vdG9uIEZpZWxkIE11bmljaXBhbCBBaXJwb3J0IHkgU2NoYXVtYnVyZyBSZWdpb25hbC4gQXNpbWlzbW8sIGVsIHRpZW1wbyBwcm9tZWRpbyBxdWUgZWwgYXZpw7NuIGVzdMOhIGVuIGVsIGFpcmUgZXMgZGUgMTUwLjcsIGxhIHZlbG9jaWRhZCBwcm9tZWRpbyBlcyAyMzYuOCwgYSB2aXNpYmlsaWRhZCBwcm9tZWRpbyBlcyBkZSA5LjMgeSBsYSBkaXN0YW5jaWEgcHJvbWVkaW8gZXMgZGUgMTA0MG1pLiBUYW1iacOpLCBzZSBwdWVkZSBvYnNlcnZhciBsYXMgdmFyaWFibGVzIGNvbiBOYU4gZSBpZGVudGlmaWNhciBzaSB0ZW5lbW9zIHByZWd1bnRhcyBhbnRlcyBkZSBsYSBtYW5pcHVsYWNpw7NuLg0KDQojI01hbmlwdWxhY2nDs24gZGUgZGF0b3MgIA0KU2UgdGUgaGEgc29saWNpdGFkbyBjb25zdWx0YXIgY3XDoWxlcyBzb24gbGFzIGFlcm9sw61uZWFzIGRlIG1heW9yIHRyw6FmaWNvIGHDqXJlbyBlbiBvcmlnZW4geSBkZXN0aW5vLiBDdWVudGFzIGNvbiB1biBkYXRhIGZyYW1lIGxsYW1hZG8gZmxpZ2h0cyBxdWUgY29udGllbmUgdG9kYSBsYSBpbmZvcm1hY2nDs24gZGUgbG9zIHZ1ZWxvcyBkZSB0b2RvcyBsb3MgYWVyb3B1ZXJ0b3MgZGUgTmV3IFlvcmsuIFBhcmEgbG9ncmFybG8gY29uc2lkZXJhIGxhcyBmdW5jaW9uZXMgc3VnZXJpZGFzIGVuIGxvcyBzaWd1aWVudGVzIHBhc29zOg0KDQoqKkNvbnN1bHRhIGVsIGRhdGEgZnJhbWUgZmxpZ2h0cyBwYXJhIHJlY29yZGFyIHN1IGNvbnRlbmlkbzoqKg0KYGBge3J9DQojIHZpZXcoZmxpZ2h0cykNCmBgYA0KDQoqKkVuY3VlbnRyYSBsb3MgZGF0b3MgZGVzY3JpcHRpdm9zIGRlbCBkYXRhIGZyYW1lIGZsaWdodHMuIElkZW50aWZpY2EgbGEgbWVkaWEgZGUgbGFzIGRpc3RhbmNpYXMgcmVjb3JyaWRhcyBlbiBtaWxsYXMqKiAgDQpgYGB7cn0NCnN1bW1hcnkoZmxpZ2h0cykNCmBgYA0KDQoqKkRlZmluZSB1biBjcml0ZXJpbyBwYXJhIGVuY29udHJhciBsYXMgYWVyb2zDrW5lYXMgcXVlIGhhbiByZWNvcnJpZG8gbcOhcyBkaXN0YW5jaWEgKGVuIG1pbGxhcykgeSBjcmVhIHVuIG51ZXZvIGRhdGEgZnJhbWUgcXVlIGZpbHRyZSBzb2xhbWVudGUgYSBsYXMgYWVvcmzDrW5lYXMgcXVlIGhhbiByZWNvcnJpZG8gdW5hIGRpc3RhbmNpYSBzdXBlcmlvciBhIGxhIG1lZGlhLCBzZSBkZXNlYW4gdmVyIGxvcyBjYW1wb3MgY2FycmllciwgZGlzdGFuY2UsIG9yaWdpbiwgZGVzdCBlbiBmb3JtYSBkZXNjZW5kZW50ZSBwb3IgZGlzdGFuY2UuKioNCmBgYHtyfQ0KbGlicmFyeShkcGx5cikNCm1hc19kaXN0YW5jaWEgPC0gc2VsZWN0KGZsaWdodHMsY2FycmllciwgZGlzdGFuY2UsIG9yaWdpbiwgZGVzdCkNCmhlYWQobWFzX2Rpc3RhbmNpYSkNCm1heW9yX21lZGlhIDwtIGZpbHRlcihtYXNfZGlzdGFuY2lhLCBkaXN0YW5jZT4xMDQwKQ0KaGVhZChtYXlvcl9tZWRpYSkNCm9yZGVuIDwtIGFycmFuZ2UgKG1heW9yX21lZGlhLGRlc2MoZGlzdGFuY2UpKQ0KaGVhZChvcmRlbikNCmNvdW50KG9yZGVuLGNhcnJpZXIsc29ydD1UUlVFKQ0KYGBgDQoNCioqRW5jdWVudHJhIGxhIHN1bWEgeSBsYSBtZWRpYSBkZSBsYXMgZGlzdGFuY2lhcyByZWNvcnJpZGFzIHBvciBjYXJyaWVyLCBlbGltaW5hIGxvcyBOQeKAmVMgZSBpbnRlcnByZXRhIHF1ZSBzaWduaWZpY2EgbGEgc3VtYSB5IGxhIG1lZGlhIGRlIGxhcyBkaXN0YW5jaWFzIHJlY29ycmlkYXMuKioNCmBgYHtyfQ0KZGlzdGFuY2lhcyA8LSBvcmRlbiAlPiUgZ3JvdXBfYnkoY2FycmllcixvcmlnaW4sZGlzdGFuY2UpICU+JQ0KICBzdW1tYXJpemUoc3VtYV9kaXN0YW5jaWE9c3VtKGRpc3RhbmNlLCBuYS5ybT1UUlVFKSwgcHJvbWVkaW9fZGlzdGFuY2lhPW1lYW4oZGlzdGFuY2UsIG5hLnJtID0gVFJVRSkpDQpkaXN0YW5jaWFzDQpgYGANCg0KKipPcmRlbmEgZW4gZm9ybWEgZGVzY2VuZGVudGUgcG9yIGRpc3RhbmNpYSByZWNvcnJpZGEqKg0KYGBge3J9DQpkaXN0YW5jaWFzX29yZGVuIDwtIGFycmFuZ2UoZGlzdGFuY2lhcywgZGVzYyhzdW1hX2Rpc3RhbmNpYSkpDQpoZWFkKGRpc3RhbmNpYXNfb3JkZW4pDQpgYGANCg0KX09ic2VydmEgdHVzIHJlc3VsdGFkb3MgZGUgbGEgdWx0aW1hIHRhYmxhIHkgYWdyZWdhIHR1cyBpbnRlcnByZXRhY2lvbmVzXyAgDQpMYSBzdW1hIGRlIGxhcyBkaXN0YW5jaWFzIHJlcHJlc2VudGEgZWwgdG90YWwgZGUgbWlsbGFzIHJlY29ycmlkb3MgYWx1ZGllbmRvIGEgbGEgY2FwYWNpZGFkIHF1ZSB0aWVuZSBjYWRhIHZpYWplIGRlIHJlY29ycmVyIGNpZXJ0YSBkaXN0YW5jaWEuIE1pZW50cmFzIHF1ZSwgZWwgcHJvbWVkaW8gZGUgZGlzdGFuY2lhIGRlbm90YSBlbCB2YWxvciByZXByZXNlbnRhdGl2byBkZSBjYWRhIHZ1ZWxvIGFjb3JkZSBhbCB0b3RhbCBkZSBkaXN0YW5jaWEgcmVjb3JyaWRhLiBDb24gYmFzZSBlbiBlc3RvIHkgbGEgdGFibGEgYW50ZXJpb3IsIHNlIG9ic2VydmEgcXVlIGxhIGFlcm9sw61uZWEgVUEgdGllbmUgZWwgdmlhamUgcXVlIG3DoXMgZGlzdGFuY2lhIHJlY29ycmUgY29uIHVuIHRvdGFsIGRlIDExMTQyMzYwIG1pIHkgZXMgbGEgYWVyb2zDrW5lYSBxdWUgbWFuZWphIGxhIG1heW9yIGNhbnRpZGFkIGRlIHZpYWplcyBjb24gbGFzIGRpc3RhbmNpYXMgbcOhcyBsYXJnYXMuIEFzaW1pc21vLCBzZSBvYnR1dm8gcXVlIGVsIGFlcm9wdWVydG8gRVdSIGN1ZW50YSBjb24gbG9zIGRvcyB2aWFqZXMgbcOhcyBsYXJnb3MgcGVybywgZWwgYWVyb3B1ZXJ0byBKRmsgdGllbmUgbWF5b3IgY2FudGlkYWQgZGUgdmlhamVzIGxhcmdvcyBkb25kZSBlbCBtw6FzIGxhcmdvIGFsY2FuemEgZW4gcHJvbWVkaW8gdW5hIGRpc3RhbmNpYSBkZSAyNDc1IG1pbGxhcy4gIA0KDQoqKklkZW50aWZpY2Egc2kgbGFzIGFlcm9sw61uZWFzIGzDrWRlcmVzIHNvbiBsYXMgbWlzbWFzIGVuIGxvcyB0cmVzIGFlcm9wdWVydG9zIGN1eW8gb3JpZ2VuIGVzIE51ZXZhIFlvcmsgKiogIA0KYGBge3J9DQpKRksgPC0gZGlzdGFuY2lhc19vcmRlbiAlPiUNCiAgZmlsdGVyKG9yaWdpbj09IkpGSyIpICU+JQ0KICBhcnJhbmdlKGNhcnJpZXIsZGVzYyhzdW1hX2Rpc3RhbmNpYSkpDQpoZWFkKEpGSykNCg0KTEdBIDwtIGRpc3RhbmNpYXNfb3JkZW4gJT4lDQogIGZpbHRlcihvcmlnaW49PSJMR0EiKSAlPiUNCiAgYXJyYW5nZShjYXJyaWVyLGRlc2Moc3VtYV9kaXN0YW5jaWEpKQ0KaGVhZChMR0EpDQogIA0KRVdSIDwtIGRpc3RhbmNpYXNfb3JkZW4gJT4lDQogIGZpbHRlcihvcmlnaW49PSJFV1IiKSAlPiUNCiAgYXJyYW5nZShjYXJyaWVyLGRlc2Moc3VtYV9kaXN0YW5jaWEpKQ0KaGVhZChFV1IpDQpgYGANCl9PYnNlcnZhY2lvbmVzIGUgaW50ZXJwcmV0YWNpb25lc18gIA0KU2Ugb2JzZXJ2YSBxdWUgbGEgYWVyb2zDrW5lYSBsw61kZXIgZW4gbG9zIGFlcm9wdWVydG9zIEpGSyB5IExHQSBlcyA5RS4gU2luIGVtYmFyZ28sIGxhIGFlcm9sw61uZWEgcXVlIHByZWRvbWluYSBlbiBsYSAiY2FiZWNlcmEiIGRlIGxvcyB0cmVzIGFlcm9wdWVydG9zIGVzIGxhIGFlcm9sw61uZWEgQUEuICANCg0KKipDb25jbHVzaW9uZXMqKiAgDQpDb24gYmFzZSBlbiBsbyBhbnRlcmlvciwgc2Ugb2JzZXJ2YSBxdWUgbGEgYWVyb2zDrW5lYSBjb24gbWF5b3IgYWxjYW5jZSwgZXMgZGVjaXIsIHF1ZSByZWNvcnJlIG1heW9yZXMgZGlzdGFuY2lhcyBlbiBtw6FzIGRlIHVuIGFlcm9wdWVydG8gY29uY3VycmlkbyBlcyBsYSBBQS4gTm8gb2JzdGFudGUsIGxhIGFlcm9sw61uZWEgcXVlIHJlY29ycmUgZGlzdGFuY2lhcyBtYXlvcmVzIGEgbGEgbWVkaWEgZXMgVUEgeSBsb3MgYWVyb3B1ZXJ0b3MgY29uIG1heW9yIG7Dum1lcm8gZGUgdmlhamVzIHF1ZSByZWNvcnJlbiBkaXN0YW5jaWFzIG1heW9yZXMgYSAxMDQwIG1pIHNvbiBlbCBKRksgeSBFV1IuDQoNCioqQmlibGlvZ3JhZsOtYSoqICANCldpY2toYW0sIEguIGFuZCBHcm9sZW11bmQsIEcuICgyMDE3KSBSIGZvciBEYXRhIFNjaWVuY2U6IEltcG9ydCwgVGlkeSwgVHJhbnNmb3JtLCBWaXN1YWxpemUsIGFuZCBNb2RlbCBEYXRhIE/igJlSZWlsbHkgTWVkaWE6IFNlYmFzdG9wb2wsIENhbGlmb3JuaWENCk55Y2ZsaWdodHMxMyB2MS4wLjAgaHR0cHM6Ly93d3cucmRvY3VtZW50YXRpb24ub3JnL3BhY2thZ2VzL255Y2ZsaWdodHMxMy92ZXJzaW9ucy8xLjAuMCA=