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