Contexto

El paquete nycflights13 contiene información sobre todos los vuelos que partieron desde Nueva York (EWR, JFK, LGA) a destinos en los Estados Unidos en 2013. Fueron 336,776 vuelos en total. Para ayudar a comprender las causas de los retrasos, también incluyen otros conjuntos de datos útiles.

Este paquete incluye las siguientes tablas:

  • Flights = todos los vuelos que salieron de Nueva York en 2013
  • Weather = datos meteorológicos por hora de cada aeropuerto
  • Planes = información de contrucción de cada avión
  • Airports = nombres y ubicaciones de aeropuertos
  • Airlines = relación entre nombres y códigos de las aerolíneas

Fuente: Origen de los datos

Instalar Paquetes y Llamar Librerías

# install.packages("nycflights13")
library("nycflights13")
# install.packages("stats")
library("stats")
# install.packages("tidyverse")
library("tidyverse")
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.4.4     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.1
## ✔ 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
# install.packages("dplyr")
library("dplyr")

Guardar Bases de Datos

flights <- flights
weather <- weather
planes <- planes
airports <- airports
airlines <- airlines

Relación entre las bases de datos

1. Cargar en memoria la tabla “flights” y mostrar su contemido

# La carga a memoria se hizo en el paso anterior. 
flights
## # A tibble: 336,776 × 19
##     year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
##    <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
##  1  2013     1     1      517            515         2      830            819
##  2  2013     1     1      533            529         4      850            830
##  3  2013     1     1      542            540         2      923            850
##  4  2013     1     1      544            545        -1     1004           1022
##  5  2013     1     1      554            600        -6      812            837
##  6  2013     1     1      554            558        -4      740            728
##  7  2013     1     1      555            600        -5      913            854
##  8  2013     1     1      557            600        -3      709            723
##  9  2013     1     1      557            600        -3      838            846
## 10  2013     1     1      558            600        -2      753            745
## # ℹ 336,766 more rows
## # ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
## #   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
## #   hour <dbl>, minute <dbl>, time_hour <dttm>

2. Consulta la estructura de “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" ...
# int: entero (sin decimales)
# num: numérico (con decimales)
# chr: caractér (letras)
# date: fecha (en R va año-mes-día)
# POSIXct: formato fecha y hora

3. ¿Cuál es la clase de “flights” y qué significa?

class(flights)
## [1] "tbl_df"     "tbl"        "data.frame"
# Las 5 clases de objetos son:
# 1. numeric: número real o decimales
# 2. integer: número enteros 
# 3. complex: números complejos
# 4. character: caracteres 
# 5. logical: TRUE o FALSE

# Las 4 clases de objetos compuestos son:
# 1. list: lista (una sola columna)
# 2. matrix: matriz (mas de una)
# 3. array: colección de objetos
# 4. data.frame: base de datos 

4. ¿Cuántas columnas y renglones tiene “flights”? ¿Cuál es su dimensión?

# Número de columnas 
ncol(flights)
## [1] 19
# Número de renglones
nrow(flights)
## [1] 336776
# Dimensión 
dim(flights)
## [1] 336776     19

5. Muestra los primeros 6 renglones de “flights”. También los últimos 6.

head(flights)
## # A tibble: 6 × 19
##    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
##   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
## 1  2013     1     1      517            515         2      830            819
## 2  2013     1     1      533            529         4      850            830
## 3  2013     1     1      542            540         2      923            850
## 4  2013     1     1      544            545        -1     1004           1022
## 5  2013     1     1      554            600        -6      812            837
## 6  2013     1     1      554            558        -4      740            728
## # ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
## #   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
## #   hour <dbl>, minute <dbl>, time_hour <dttm>
tail(flights)
## # A tibble: 6 × 19
##    year month   day dep_time sched_dep_time dep_delay arr_time sched_arr_time
##   <int> <int> <int>    <int>          <int>     <dbl>    <int>          <int>
## 1  2013     9    30       NA           1842        NA       NA           2019
## 2  2013     9    30       NA           1455        NA       NA           1634
## 3  2013     9    30       NA           2200        NA       NA           2312
## 4  2013     9    30       NA           1210        NA       NA           1330
## 5  2013     9    30       NA           1159        NA       NA           1344
## 6  2013     9    30       NA            840        NA       NA           1020
## # ℹ 11 more variables: arr_delay <dbl>, carrier <chr>, flight <int>,
## #   tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>,
## #   hour <dbl>, minute <dbl>, time_hour <dttm>
# Si quisieramos 7 renglones: head(flights,7)

6. Muestra los estadísticos descriptivos de “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  
## 

Conclusión

En este trabajo pudimos utilizar las funciones más comunes del análisis exploratorio, el cual es el primer paso para cualquier trabajo de manipilación de datos.

LS0tCnRpdGxlOiAiRXZpZGVuY2lhIDEgfCBOZXcgWW9yayIKYXV0aG9yOiAiRGllZ28gU2VybmEgLSBBMDEyODU0OTAiCmRhdGU6ICIyMDI0LTAyLTI2IgpvdXRwdXQ6IAogIGh0bWxfZG9jdW1lbnQ6CiAgICB0b2M6IFRSVUUKICAgIHRvY19mbG9hdDogVFJVRQogICAgY29kZV9kb3dubG9hZDogVFJVRQogICAgdGhlbWU6IHlldGkKLS0tCgohW10oL1VzZXJzL2RpZWdvc2VybmEvRGVza3RvcC9UZWMgU21lc3RyZXMgLzR0byBTZW1lc3RyZS9NYW5pcHVsYWNpb8yBbiBkZSBEYXRvcy9Gb3RvcyBSIHN0dWRpby9OZXdfeW9ya190aW1lc19zcXVhcmUtdGVyYWJhc3MucG5nKQoKIyA8c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij5Db250ZXh0bzwvc3Bhbj4KRWwgcGFxdWV0ZSAqKm55Y2ZsaWdodHMxMyoqIGNvbnRpZW5lIGluZm9ybWFjacOzbiBzb2JyZSB0b2RvcyBsb3MgdnVlbG9zIHF1ZSBwYXJ0aWVyb24gZGVzZGUgTnVldmEgWW9yayAoRVdSLCBKRkssIExHQSkgYSBkZXN0aW5vcyBlbiBsb3MgRXN0YWRvcyBVbmlkb3MgZW4gMjAxMy4gRnVlcm9uIDMzNiw3NzYgdnVlbG9zIGVuIHRvdGFsLiBQYXJhIGF5dWRhciBhIGNvbXByZW5kZXIgbGFzIGNhdXNhcyBkZSBsb3MgcmV0cmFzb3MsIHRhbWJpw6luIGluY2x1eWVuIG90cm9zIGNvbmp1bnRvcyBkZSBkYXRvcyDDunRpbGVzLiAgCgpFc3RlIHBhcXVldGUgaW5jbHV5ZSBsYXMgc2lndWllbnRlcyB0YWJsYXM6ICAKCisgRmxpZ2h0cyA9IHRvZG9zIGxvcyB2dWVsb3MgcXVlIHNhbGllcm9uIGRlIE51ZXZhIFlvcmsgZW4gMjAxMyAKKyBXZWF0aGVyID0gZGF0b3MgbWV0ZW9yb2zDs2dpY29zIHBvciBob3JhIGRlIGNhZGEgYWVyb3B1ZXJ0byAKKyBQbGFuZXMgPSBpbmZvcm1hY2nDs24gZGUgY29udHJ1Y2Npw7NuIGRlIGNhZGEgYXZpw7NuIAorIEFpcnBvcnRzID0gbm9tYnJlcyB5IHViaWNhY2lvbmVzIGRlIGFlcm9wdWVydG9zIAorIEFpcmxpbmVzID0gcmVsYWNpw7NuIGVudHJlIG5vbWJyZXMgeSBjw7NkaWdvcyBkZSBsYXMgYWVyb2zDrW5lYXMKCkZ1ZW50ZToKW09yaWdlbiBkZSBsb3MgZGF0b3NdKGh0dHBzOi8vY3Jhbi5yLXByb2plY3Qub3JnL3dlYi9wYWNrYWdlcy9ueWNmbGlnaHRzMTMvbnljZmxpZ2h0czEzLnBkZikKCiMgPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+SW5zdGFsYXIgUGFxdWV0ZXMgeSBMbGFtYXIgTGlicmVyw61hczwvc3Bhbj4KYGBge3J9CiMgaW5zdGFsbC5wYWNrYWdlcygibnljZmxpZ2h0czEzIikKbGlicmFyeSgibnljZmxpZ2h0czEzIikKIyBpbnN0YWxsLnBhY2thZ2VzKCJzdGF0cyIpCmxpYnJhcnkoInN0YXRzIikKIyBpbnN0YWxsLnBhY2thZ2VzKCJ0aWR5dmVyc2UiKQpsaWJyYXJ5KCJ0aWR5dmVyc2UiKQojIGluc3RhbGwucGFja2FnZXMoImRwbHlyIikKbGlicmFyeSgiZHBseXIiKQpgYGAKCiMgPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+R3VhcmRhciBCYXNlcyBkZSBEYXRvczwvc3Bhbj4KYGBge3J9CmZsaWdodHMgPC0gZmxpZ2h0cwp3ZWF0aGVyIDwtIHdlYXRoZXIKcGxhbmVzIDwtIHBsYW5lcwphaXJwb3J0cyA8LSBhaXJwb3J0cwphaXJsaW5lcyA8LSBhaXJsaW5lcwpgYGAKCiMgPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+UmVsYWNpw7NuIGVudHJlIGxhcyBiYXNlcyBkZSBkYXRvczwvc3Bhbj4KIVtdKC9Vc2Vycy9kaWVnb3Nlcm5hL0Rlc2t0b3AvVGVjIFNtZXN0cmVzIC80dG8gU2VtZXN0cmUvTWFuaXB1bGFjaW/MgW4gZGUgRGF0b3MvRm90b3MgUiBzdHVkaW8vcmVsYXRpb25hbC1ueWNmbGlnaHRzLnBuZykKCiMgPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+MS4gQ2FyZ2FyIGVuIG1lbW9yaWEgbGEgdGFibGEgImZsaWdodHMiIHkgbW9zdHJhciBzdSBjb250ZW1pZG88L3NwYW4+CmBgYHtyfQojIExhIGNhcmdhIGEgbWVtb3JpYSBzZSBoaXpvIGVuIGVsIHBhc28gYW50ZXJpb3IuIApmbGlnaHRzCmBgYAoKIyA8c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij4yLiBDb25zdWx0YSBsYSBlc3RydWN0dXJhIGRlICJmbGlnaHRzIjwvc3Bhbj4KYGBge3J9CnN0cihmbGlnaHRzKQojIGludDogZW50ZXJvIChzaW4gZGVjaW1hbGVzKQojIG51bTogbnVtw6lyaWNvIChjb24gZGVjaW1hbGVzKQojIGNocjogY2FyYWN0w6lyIChsZXRyYXMpCiMgZGF0ZTogZmVjaGEgKGVuIFIgdmEgYcOxby1tZXMtZMOtYSkKIyBQT1NJWGN0OiBmb3JtYXRvIGZlY2hhIHkgaG9yYQpgYGAKCiMgPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+My4gwr9DdcOhbCBlcyBsYSBjbGFzZSBkZSAiZmxpZ2h0cyIgeSBxdcOpIHNpZ25pZmljYT88L3NwYW4+CmBgYHtyfQpjbGFzcyhmbGlnaHRzKQoKIyBMYXMgNSBjbGFzZXMgZGUgb2JqZXRvcyBzb246CiMgMS4gbnVtZXJpYzogbsO6bWVybyByZWFsIG8gZGVjaW1hbGVzCiMgMi4gaW50ZWdlcjogbsO6bWVybyBlbnRlcm9zIAojIDMuIGNvbXBsZXg6IG7Dum1lcm9zIGNvbXBsZWpvcwojIDQuIGNoYXJhY3RlcjogY2FyYWN0ZXJlcyAKIyA1LiBsb2dpY2FsOiBUUlVFIG8gRkFMU0UKCiMgTGFzIDQgY2xhc2VzIGRlIG9iamV0b3MgY29tcHVlc3RvcyBzb246CiMgMS4gbGlzdDogbGlzdGEgKHVuYSBzb2xhIGNvbHVtbmEpCiMgMi4gbWF0cml4OiBtYXRyaXogKG1hcyBkZSB1bmEpCiMgMy4gYXJyYXk6IGNvbGVjY2nDs24gZGUgb2JqZXRvcwojIDQuIGRhdGEuZnJhbWU6IGJhc2UgZGUgZGF0b3MgCmBgYAoKIyA8c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij40LiDCv0N1w6FudGFzIGNvbHVtbmFzIHkgcmVuZ2xvbmVzIHRpZW5lICJmbGlnaHRzIj8gwr9DdcOhbCBlcyBzdSBkaW1lbnNpw7NuPzwvc3Bhbj4KYGBge3J9CiMgTsO6bWVybyBkZSBjb2x1bW5hcyAKbmNvbChmbGlnaHRzKQojIE7Dum1lcm8gZGUgcmVuZ2xvbmVzCm5yb3coZmxpZ2h0cykKIyBEaW1lbnNpw7NuIApkaW0oZmxpZ2h0cykKYGBgCgojIDxzcGFuIHN0eWxlPSJjb2xvcjogYmx1ZTsiPjUuIE11ZXN0cmEgbG9zIHByaW1lcm9zIDYgcmVuZ2xvbmVzIGRlICJmbGlnaHRzIi4gVGFtYmnDqW4gbG9zIMO6bHRpbW9zIDYuPC9zcGFuPgpgYGB7cn0KaGVhZChmbGlnaHRzKQp0YWlsKGZsaWdodHMpCiMgU2kgcXVpc2llcmFtb3MgNyByZW5nbG9uZXM6IGhlYWQoZmxpZ2h0cyw3KQpgYGAKCiMgPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+Ni4gTXVlc3RyYSBsb3MgZXN0YWTDrXN0aWNvcyBkZXNjcmlwdGl2b3MgZGUgImZsaWdodHMiLjwvc3Bhbj4KYGBge3J9CnN1bW1hcnkoZmxpZ2h0cykKYGBgCgojIDxzcGFuIHN0eWxlPSJjb2xvcjogYmx1ZTsiPkNvbmNsdXNpw7NuPC9zcGFuPgpFbiBlc3RlIHRyYWJham8gcHVkaW1vcyB1dGlsaXphciBsYXMgZnVuY2lvbmVzIG3DoXMgY29tdW5lcyBkZWwgYW7DoWxpc2lzIGV4cGxvcmF0b3JpbywgZWwgY3VhbCBlcyBlbCBwcmltZXIgcGFzbyBwYXJhIGN1YWxxdWllciB0cmFiYWpvIGRlIG1hbmlwaWxhY2nDs24gZGUgZGF0b3MuIA==