AE Funciones
library(nycflights13)
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
## ✔ ggplot2 3.3.6 ✔ purrr 0.3.4
## ✔ tibble 3.1.8 ✔ dplyr 1.1.0
## ✔ tidyr 1.2.1 ✔ stringr 1.4.1
## ✔ readr 2.1.2 ✔ forcats 0.5.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
library(dplyr)
data(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
muta <- 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
mutate2 <- mutate(muta, tiempo_ganado = arr_delay - dep_delay, velocidad_vuelo = distance/air_time*60)
mutate2
## # 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(mutate2)
## # A tibble: 336,776 × 0
Filtrando datos en un data frame con filter()
#9 Muestra los vuelos que presentan un retraso superior a 2 horas a la hora de llegada
filter(flights, arr_delay > 120)
## # 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
filter(flights, arr_delay>120 | dep_delay>120)
## # 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
filter(flights, !(arr_delay>120 | dep_delay>120))
## # 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
filter(flights, month == 11 | month ==12)
## # 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
filter(flights, carrier %in% c("UA","AA","DL"))
## # 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.
#utiliza pipe para que veas como facilita la estructura de la consulta
arrange(flights, desc(arr_delay))
## # 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
#Recordando que podemos calcular la velocidad de vuelo con mutate, velocidad_vuelo = distance / air_time * 60
#ordena de forma descendente por velocidad_vuelo
#¿Cuál es la aerolínea que vuela más rápido?
muta2 <- select(flights, year:day, carrier, ends_with("delay"), distance, air_time)
mutate3 <- mutate(muta2, tiempo_ganado = arr_delay - dep_delay, velocidad_vuelo = distance/air_time*60)
arrange(mutate3, desc(velocidad_vuelo))
## # A tibble: 336,776 × 10
## year month day carrier dep_delay arr_delay dista…¹ air_t…² tiemp…³ veloc…⁴
## <int> <int> <int> <chr> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 2013 5 25 DL 9 -14 762 65 -23 703.
## 2 2013 7 2 EV 45 26 1008 93 -19 650.
## 3 2013 5 13 EV 15 -1 594 55 -16 648
## 4 2013 3 23 EV 4 2 748 70 -2 641.
## 5 2013 1 12 DL -1 -28 1035 105 -27 591.
## 6 2013 11 17 DL -5 -51 1598 170 -46 564
## 7 2013 2 21 B6 -3 -26 1598 172 -23 557.
## 8 2013 11 17 AA -1 -43 1623 175 -42 556.
## 9 2013 11 16 DL 38 -19 1598 173 -57 554.
## 10 2013 11 16 B6 -10 -38 1598 173 -28 554.
## # … with 336,766 more rows, and abbreviated variable names ¹distance,
## # ²air_time, ³tiempo_ganado, ⁴velocidad_vuelo
#La aerolínea que vuela más rápido es Delta (DL)
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.
group <- group_by(flights, year, month, day)
group2<- summarize(group, retraso=mean(dep_delay, na.rm=TRUE))
## `summarise()` has grouped output by 'year', 'month'. You can override using the
## `.groups` argument.
arrange(group2, retraso)
## # A tibble: 365 × 4
## # Groups: year, month [12]
## year month day 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
#La fecha con menor retraso fue el 24 de Septiembre del 2013.
#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
conteo <- flights %>%
group_by(carrier, dest) %>%
summarize(total = n())
## `summarise()` has grouped output by 'carrier'. You can override using the
## `.groups` argument.
conteo
## # A tibble: 314 × 3
## # Groups: carrier [16]
## carrier dest total
## <chr> <chr> <int>
## 1 9E ATL 59
## 2 9E AUS 2
## 3 9E AVL 10
## 4 9E BGR 1
## 5 9E BNA 474
## 6 9E BOS 914
## 7 9E BTV 2
## 8 9E BUF 833
## 9 9E BWI 856
## 10 9E CAE 3
## # … with 304 more rows
#La aerolínea con mayor número de vuelos es 'DL' (Delta) y el destino con el mayor número de vuelos es ATL (Atlanta).
#18 Obtén la máxima distancias recorrida por aerolínea y destino, ordena en forma descendente por máxima distancia recorrida
dist <- flights %>%
group_by(carrier,dest) %>%
summarize(max_distancia = sum(distance))
## `summarise()` has grouped output by 'carrier'. You can override using the
## `.groups` argument.
dist
## # A tibble: 314 × 3
## # Groups: carrier [16]
## carrier dest max_distancia
## <chr> <chr> <dbl>
## 1 9E ATL 44784
## 2 9E AUS 3042
## 3 9E AVL 5990
## 4 9E BGR 378
## 5 9E BNA 362500
## 6 9E BOS 170918
## 7 9E BTV 516
## 8 9E BUF 250247
## 9 9E BWI 157504
## 10 9E CAE 1851
## # … with 304 more rows
#La aerolínea con mayor distancia recorrida es 'UA' (United Airlines) y el destino es SFO (San Fransisco).
#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
tiempo <- flights %>%
group_by(carrier, dest) %>%
summarize(suma_tiempo_vuelo = sum(air_time, na.rm = TRUE))
## `summarise()` has grouped output by 'carrier'. You can override using the
## `.groups` argument.
tiempo
## # A tibble: 314 × 3
## # Groups: carrier [16]
## carrier dest suma_tiempo_vuelo
## <chr> <chr> <dbl>
## 1 9E ATL 6726
## 2 9E AUS 444
## 3 9E AVL 922
## 4 9E BGR 0
## 5 9E BNA 52335
## 6 9E BOS 33201
## 7 9E BTV 97
## 8 9E BUF 44750
## 9 9E BWI 31620
## 10 9E CAE 313
## # … with 304 more rows
#Las aerolineás con más tiempo volado son United Airlines (SFO, LAX, IAH), American Airlines (DFW, LAX, MIA) y Delta (ATL, LAX, SFO).
Renombrando campos en un data frame con rename()
#20 En la consulta 18 renombra el campo max_distancia por distancia_máxima_recorrida
nombre <- dist %>% rename(distancia_máxima_recorrida = max_distancia)
nombre
## # A tibble: 314 × 3
## # Groups: carrier [16]
## carrier dest distancia_máxima_recorrida
## <chr> <chr> <dbl>
## 1 9E ATL 44784
## 2 9E AUS 3042
## 3 9E AVL 5990
## 4 9E BGR 378
## 5 9E BNA 362500
## 6 9E BOS 170918
## 7 9E BTV 516
## 8 9E BUF 250247
## 9 9E BWI 157504
## 10 9E CAE 1851
## # … with 304 more rows