R Markdown

This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.

When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this:

library(ISLR)
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
## ✔ ggplot2 3.4.1     ✔ purrr   1.0.1
## ✔ tibble  3.1.8     ✔ dplyr   1.1.0
## ✔ tidyr   1.3.0     ✔ stringr 1.5.0
## ✔ readr   2.1.4     ✔ forcats 1.0.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
library(rmarkdown)
library(nycflights13)
library(dplyr)
#Carga en memoria el data frame flights y muestra su contenido.
data(flights)
View(flights)

#Seleccionar campos de un data frame con select()
#1 Seleccionar del data frame flights los campos carrier, número de vuelo (flight), origen, destino, tiempo de vuelo y distancia recorrida
select(flights,carrier, flight, origin, dest, air_time, distance)
## # A tibble: 336,776 × 6
##    carrier flight origin dest  air_time distance
##    <chr>    <int> <chr>  <chr>    <dbl>    <dbl>
##  1 UA        1545 EWR    IAH        227     1400
##  2 UA        1714 LGA    IAH        227     1416
##  3 AA        1141 JFK    MIA        160     1089
##  4 B6         725 JFK    BQN        183     1576
##  5 DL         461 LGA    ATL        116      762
##  6 UA        1696 EWR    ORD        150      719
##  7 B6         507 EWR    FLL        158     1065
##  8 EV        5708 LGA    IAD         53      229
##  9 B6          79 JFK    MCO        140      944
## 10 AA         301 LGA    ORD        138      733
## # … with 336,766 more rows
#2 Selecciona del data frame flights todos los campos entre year y day (incluyéndolo)
select( flights, year:day)
## # A tibble: 336,776 × 3
##     year month   day
##    <int> <int> <int>
##  1  2013     1     1
##  2  2013     1     1
##  3  2013     1     1
##  4  2013     1     1
##  5  2013     1     1
##  6  2013     1     1
##  7  2013     1     1
##  8  2013     1     1
##  9  2013     1     1
## 10  2013     1     1
## # … with 336,766 more rows
#3 Seleccionar del data frame flights todos los campos con exepción de hour, minute y time_hour
select(flights, -(hour:time_hour))
## # A tibble: 336,776 × 16
##     year month   day dep_time sched_de…¹ 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     
##  7  2013     1     1      555        600      -5     913     854      19 B6     
##  8  2013     1     1      557        600      -3     709     723     -14 EV     
##  9  2013     1     1      557        600      -3     838     846      -8 B6     
## 10  2013     1     1      558        600      -2     753     745       8 AA     
## # … with 336,766 more rows, 6 more variables: flight <int>, tailnum <chr>,
## #   origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>, and abbreviated
## #   variable names ¹​sched_dep_time, ²​dep_delay, ³​arr_time, ⁴​sched_arr_time,
## #   ⁵​arr_delay
#4 Seleccionar del data frame flights todos los campos que inicien con "dep"
select(flights,starts_with("dep"))
## # A tibble: 336,776 × 2
##    dep_time dep_delay
##       <int>     <dbl>
##  1      517         2
##  2      533         4
##  3      542         2
##  4      544        -1
##  5      554        -6
##  6      554        -4
##  7      555        -5
##  8      557        -3
##  9      557        -3
## 10      558        -2
## # … with 336,766 more rows
#5 Seleccionar del data frame flights todos los campos que terminen con "delay"
select(flights,ends_with("delay"))
## # A tibble: 336,776 × 2
##    dep_delay arr_delay
##        <dbl>     <dbl>
##  1         2        11
##  2         4        20
##  3         2        33
##  4        -1       -18
##  5        -6       -25
##  6        -4        12
##  7        -5        19
##  8        -3       -14
##  9        -3        -8
## 10        -2         8
## # … with 336,766 more rows
#6 Seleccionar del data frame flights todos los campos que contengan "time"
select(flights, contains("time"))
## # A tibble: 336,776 × 6
##    dep_time sched_dep_time arr_time sched_arr_time air_time time_hour          
##       <int>          <int>    <int>          <int>    <dbl> <dttm>             
##  1      517            515      830            819      227 2013-01-01 05:00:00
##  2      533            529      850            830      227 2013-01-01 05:00:00
##  3      542            540      923            850      160 2013-01-01 05:00:00
##  4      544            545     1004           1022      183 2013-01-01 05:00:00
##  5      554            600      812            837      116 2013-01-01 06:00:00
##  6      554            558      740            728      150 2013-01-01 05:00:00
##  7      555            600      913            854      158 2013-01-01 06:00:00
##  8      557            600      709            723       53 2013-01-01 06:00:00
##  9      557            600      838            846      140 2013-01-01 06:00:00
## 10      558            600      753            745      138 2013-01-01 06:00:00
## # … with 336,766 more rows
#Agregar nuevos campos a un data frame con mutate()

#7 Seleccionar del data frame flights los campos de year a day, los que terminen con delay y los campos distances y air_time#
flights7 <- select(flights, year:day, ends_with("delay"), distance, air_time)


#agrega dos campos al data frame anterior

  #1) tiempo_ganado que resulta de restar la hora de llegada a la hora de partida
  #2) velocidad_vuelo que resulta de dividir distancia entre tiempo de vuelo por 60
   mutate(flights7, tiempo_ganado = arr_delay-dep_delay, velocidad_vuelo = distance/air_time*60)
## # A tibble: 336,776 × 9
##     year month   day dep_delay arr_delay distance air_time tiempo_ganado veloc…¹
##    <int> <int> <int>     <dbl>     <dbl>    <dbl>    <dbl>         <dbl>   <dbl>
##  1  2013     1     1         2        11     1400      227             9    370.
##  2  2013     1     1         4        20     1416      227            16    374.
##  3  2013     1     1         2        33     1089      160            31    408.
##  4  2013     1     1        -1       -18     1576      183           -17    517.
##  5  2013     1     1        -6       -25      762      116           -19    394.
##  6  2013     1     1        -4        12      719      150            16    288.
##  7  2013     1     1        -5        19     1065      158            24    404.
##  8  2013     1     1        -3       -14      229       53           -11    259.
##  9  2013     1     1        -3        -8      944      140            -5    405.
## 10  2013     1     1        -2         8      733      138            10    319.
## # … with 336,766 more rows, and abbreviated variable name ¹​velocidad_vuelo
#8 Muestra únicamente los nuevos campos calculados con transmute()
  transmute(flights, tiempo_ganado = arr_delay-dep_delay, velocidad_vuelo = distance/air_time*60)
## # A tibble: 336,776 × 2
##    tiempo_ganado velocidad_vuelo
##            <dbl>           <dbl>
##  1             9            370.
##  2            16            374.
##  3            31            408.
##  4           -17            517.
##  5           -19            394.
##  6            16            288.
##  7            24            404.
##  8           -11            259.
##  9            -5            405.
## 10            10            319.
## # … with 336,766 more rows
#9 Muestra los vuelos que presentan un retraso superior a 2 horas a la hora de llegada
flightsRetrasoMayor2hrsLlegada <- filter(flights, (arr_delay>120))
flightsRetrasoMayor2hrsLlegada
## # A tibble: 10,034 × 19
##     year month   day dep_time sched_de…¹ dep_d…² arr_t…³ sched…⁴ arr_d…⁵ carrier
##    <int> <int> <int>    <int>      <int>   <dbl>   <int>   <int>   <dbl> <chr>  
##  1  2013     1     1      811        630     101    1047     830     137 MQ     
##  2  2013     1     1      848       1835     853    1001    1950     851 MQ     
##  3  2013     1     1      957        733     144    1056     853     123 UA     
##  4  2013     1     1     1114        900     134    1447    1222     145 UA     
##  5  2013     1     1     1505       1310     115    1638    1431     127 EV     
##  6  2013     1     1     1525       1340     105    1831    1626     125 B6     
##  7  2013     1     1     1549       1445      64    1912    1656     136 EV     
##  8  2013     1     1     1558       1359     119    1718    1515     123 EV     
##  9  2013     1     1     1732       1630      62    2028    1825     123 EV     
## 10  2013     1     1     1803       1620     103    2008    1750     138 MQ     
## # … with 10,024 more rows, 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
#10 Muestra los vuelos que presentan un retraso superior a 2 horas en la hora de llegada o en la hora de partida
flightsRetrasoMayor2hrsLlegadaOSalida <-filter(flights, arr_delay>120|dep_delay>120)
flightsRetrasoMayor2hrsLlegadaOSalida
## # A tibble: 11,422 × 19
##     year month   day dep_time sched_de…¹ dep_d…² arr_t…³ sched…⁴ arr_d…⁵ carrier
##    <int> <int> <int>    <int>      <int>   <dbl>   <int>   <int>   <dbl> <chr>  
##  1  2013     1     1      811        630     101    1047     830     137 MQ     
##  2  2013     1     1      848       1835     853    1001    1950     851 MQ     
##  3  2013     1     1      957        733     144    1056     853     123 UA     
##  4  2013     1     1     1114        900     134    1447    1222     145 UA     
##  5  2013     1     1     1505       1310     115    1638    1431     127 EV     
##  6  2013     1     1     1525       1340     105    1831    1626     125 B6     
##  7  2013     1     1     1540       1338     122    2020    1825     115 B6     
##  8  2013     1     1     1549       1445      64    1912    1656     136 EV     
##  9  2013     1     1     1558       1359     119    1718    1515     123 EV     
## 10  2013     1     1     1732       1630      62    2028    1825     123 EV     
## # … with 11,412 more rows, 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
#11 Ahora, muestra los vuelos que NO presentan un retraso superior a 2 horas en la hora de llegada o en la hora de partida
flightsSinRetrasoMayor2hrsLlegadaOSalida  <- filter(flights, !(arr_delay>120 | dep_delay>120))
flightsSinRetrasoMayor2hrsLlegadaOSalida
## # A tibble: 316,050 × 19
##     year month   day dep_time sched_de…¹ 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     
##  7  2013     1     1      555        600      -5     913     854      19 B6     
##  8  2013     1     1      557        600      -3     709     723     -14 EV     
##  9  2013     1     1      557        600      -3     838     846      -8 B6     
## 10  2013     1     1      558        600      -2     753     745       8 AA     
## # … with 316,040 more rows, 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
#12 Muestra los vuelos realizados en los meses de Noviembre y Diciembre
flightsNovYDec <- filter(flights, month=="12" | month=="11")
flightsNovYDec
## # A tibble: 55,403 × 19
##     year month   day dep_time sched_de…¹ dep_d…² arr_t…³ sched…⁴ arr_d…⁵ carrier
##    <int> <int> <int>    <int>      <int>   <dbl>   <int>   <int>   <dbl> <chr>  
##  1  2013    11     1        5       2359       6     352     345       7 B6     
##  2  2013    11     1       35       2250     105     123    2356      87 B6     
##  3  2013    11     1      455        500      -5     641     651     -10 US     
##  4  2013    11     1      539        545      -6     856     827      29 UA     
##  5  2013    11     1      542        545      -3     831     855     -24 AA     
##  6  2013    11     1      549        600     -11     912     923     -11 UA     
##  7  2013    11     1      550        600     -10     705     659       6 US     
##  8  2013    11     1      554        600      -6     659     701      -2 US     
##  9  2013    11     1      554        600      -6     826     827      -1 DL     
## 10  2013    11     1      554        600      -6     749     751      -2 DL     
## # … with 55,393 more rows, 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
#13 Muestra los vuelos operados por United, American o Delta
#Consulta el data frame airlines para identificar las claves de los carrier correspondientes a las aerolíneas United, American y Delta
#UA= United Airlines, Inc AA= American Airlines DL= Delta Air Lines, Inc.
flightsUnitedAmericanYDelta <- filter(flights, carrier=="UA"|carrier== "AA"|carrier== "DL")
flightsUnitedAmericanYDelta
## # A tibble: 139,504 × 19
##     year month   day dep_time sched_de…¹ 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      554        600      -6     812     837     -25 DL     
##  5  2013     1     1      554        558      -4     740     728      12 UA     
##  6  2013     1     1      558        600      -2     753     745       8 AA     
##  7  2013     1     1      558        600      -2     924     917       7 UA     
##  8  2013     1     1      558        600      -2     923     937     -14 UA     
##  9  2013     1     1      559        600      -1     941     910      31 AA     
## 10  2013     1     1      559        600      -1     854     902      -8 UA     
## # … with 139,494 more rows, 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
#14 arrange()funciona de manera similar a filter() excepto que en lugar de seleccionar filas, cambia su orden.
#Ordena flights para encontrar los vuelos más retrasados, el campo arr_delay indica el retraso a la llegada, ordena en forma descendente.
flightsMasAtrasadosArr <- arrange(flights, desc(arr_delay))
flightsMasAtrasadosArr
## # A tibble: 336,776 × 19
##     year month   day dep_time sched_de…¹ dep_d…² arr_t…³ sched…⁴ arr_d…⁵ carrier
##    <int> <int> <int>    <int>      <int>   <dbl>   <int>   <int>   <dbl> <chr>  
##  1  2013     1     9      641        900    1301    1242    1530    1272 HA     
##  2  2013     6    15     1432       1935    1137    1607    2120    1127 MQ     
##  3  2013     1    10     1121       1635    1126    1239    1810    1109 MQ     
##  4  2013     9    20     1139       1845    1014    1457    2210    1007 AA     
##  5  2013     7    22      845       1600    1005    1044    1815     989 MQ     
##  6  2013     4    10     1100       1900     960    1342    2211     931 DL     
##  7  2013     3    17     2321        810     911     135    1020     915 DL     
##  8  2013     7    22     2257        759     898     121    1026     895 DL     
##  9  2013    12     5      756       1700     896    1058    2020     878 AA     
## 10  2013     5     3     1133       2055     878    1250    2215     875 MQ     
## # … with 336,766 more rows, 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
#15 Ordena flights para encontrar los vuelos más rápidos (velocidad más alta).
#Muestra los campos carrier, distance y air_time
flightsMasRapidos <- select(flights, carrier, distance, air_time)

#Recordando que podemos calcular la velocidad de vuelo con mutate, velocidad_vuelo = distance / air_time * 60
flightsMasRapidos <- mutate(flightsMasRapidos, velocidad_vuelo = distance/air_time*60)

#ordena de forma descendente por velocidad_vuelo
flightsMasRapidos <- arrange(flightsMasRapidos, desc(velocidad_vuelo))
flightsMasRapidos
## # A tibble: 336,776 × 4
##    carrier distance air_time velocidad_vuelo
##    <chr>      <dbl>    <dbl>           <dbl>
##  1 DL           762       65            703.
##  2 EV          1008       93            650.
##  3 EV           594       55            648 
##  4 EV           748       70            641.
##  5 DL          1035      105            591.
##  6 DL          1598      170            564 
##  7 B6          1598      172            557.
##  8 AA          1623      175            556.
##  9 DL          1598      173            554.
## 10 B6          1598      173            554.
## # … with 336,766 more rows
#¿Cuál es la aerolínea que vuela más rápido?
#La aerolínea con la mayor velocidad calculada fue Delta, con 703.3846


#Aplicando funciones como min, max, mean, sum, count, etc con group_by() y summarize()
#16 Cuál es la media del retraso en los vuelos, agrupa por year, month, day

#Elimina los Na's
#Identifica el día, mes, año que tuvo menos retraso.
#El menor retraso fue el día 24 de septiembre de 2013.
flightsMedia <- group_by(flights, year, month, day)
flightsMedia <- summarize(flightsMedia, media_retraso=mean (dep_delay, na.rm=TRUE))
## `summarise()` has grouped output by 'year', 'month'. You can override using the
## `.groups` argument.
flightsMedia <- arrange(flightsMedia,(media_retraso))
flightsMedia
## # A tibble: 365 × 4
## # Groups:   year, month [12]
##     year month   day media_retraso
##    <int> <int> <int>         <dbl>
##  1  2013     9    24       -1.33  
##  2  2013    10     2       -0.920 
##  3  2013    11     9       -0.629 
##  4  2013     9     6       -0.398 
##  5  2013     9     5       -0.388 
##  6  2013    10    29       -0.349 
##  7  2013     9     7       -0.250 
##  8  2013    11     5       -0.183 
##  9  2013    10    19       -0.107 
## 10  2013    10     1       -0.0990
## # … with 355 more rows
#17 Obtén el número de vuelos por aerlorínea y destino
#Identifica aerolínea y destino con mayor número de vuelos ordenando el resultado anterior de forma descendente
#La aerolínea con el mayor número de vuelos es Delta, y el destino Atlanta con 10571.
flightsNumber <-  group_by(flights, carrier, dest)
flightsNumber <- summarize(flightsNumber, count = n())
## `summarise()` has grouped output by 'carrier'. You can override using the
## `.groups` argument.
flightsNumber <- arrange(flightsNumber, desc(count))
flightsNumber
## # A tibble: 314 × 3
## # Groups:   carrier [16]
##    carrier dest  count
##    <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
## # … with 304 more rows
#18 Obtén la máxima distancias recorrida por aerolínea y destino, ordena en forma descendente por máxima distancia recorrida
#El vuelo más largo fue recorrido por la aerolínea HA, Hawaian Airlines teniendo un valor de 4983.
flightsMaxDistance <- group_by(flights, carrier, dest)
flightsMaxDistance <- summarize (flightsMaxDistance, max_distancia= max (distance))
## `summarise()` has grouped output by 'carrier'. You can override using the
## `.groups` argument.
flightsMaxDistance <- arrange(flightsMaxDistance, desc(max_distancia))
flightsMaxDistance
## # A tibble: 314 × 3
## # Groups:   carrier [16]
##    carrier dest  max_distancia
##    <chr>   <chr>         <dbl>
##  1 HA      HNL            4983
##  2 UA      HNL            4963
##  3 UA      ANC            3370
##  4 AA      SFO            2586
##  5 B6      SFO            2586
##  6 DL      SFO            2586
##  7 UA      SFO            2586
##  8 VX      SFO            2586
##  9 B6      OAK            2576
## 10 B6      SJC            2569
## # … with 304 more rows
#19 Obtén el tiempo de vuelo por aerolínea y destino, ordena en forma descendente por la suma_tiempo_vuelo e identifica las 3 aerolíneas con sus destinos que han volado más tiempo
#Las aerolíneas que han volado por más tiempo, de mayor a menor son: Hawaiian Airlines Inc, Jetblue Airways Corporation y EndeavorAir.
flightsTimePerCarrier <- group_by(flights, carrier, dest)
flightsTimePerCarrier <- summarize(flightsTimePerCarrier, tiempo_vuelo = sum(air_time))
## `summarise()` has grouped output by 'carrier'. You can override using the
## `.groups` argument.
flightsTimePerCarrier <- arrange(flightsTimePerCarrier, desc(tiempo_vuelo))
flightsTimePerCarrier[1:3,]
## # A tibble: 3 × 3
## # Groups:   carrier [3]
##   carrier dest  tiempo_vuelo
##   <chr>   <chr>        <dbl>
## 1 HA      HNL         213096
## 2 B6      ABQ          63289
## 3 9E      RSW          10764
#Renombrando campos en un data frame con rename()
#20 En la consulta 18 renombra el campo max_distancia por distancia_máxima_recorrida
flightsMaxDistance <- rename(flightsMaxDistance, maxima_distancia_recorrida = max_distancia)
flightsMaxDistance
## # A tibble: 314 × 3
## # Groups:   carrier [16]
##    carrier dest  maxima_distancia_recorrida
##    <chr>   <chr>                      <dbl>
##  1 HA      HNL                         4983
##  2 UA      HNL                         4963
##  3 UA      ANC                         3370
##  4 AA      SFO                         2586
##  5 B6      SFO                         2586
##  6 DL      SFO                         2586
##  7 UA      SFO                         2586
##  8 VX      SFO                         2586
##  9 B6      OAK                         2576
## 10 B6      SJC                         2569
## # … with 304 more rows

Including Plots

You can also embed plots, for example:

Note that the echo = FALSE parameter was added to the code chunk to prevent printing of the R code that generated the plot.