Capítulo6 Transformación: Operaciones boolenas y lógicas
Fecha de la ultima revisión
## [1] "2024-11-07"
El tema proviene de los siguientes sitios.
English: https://r4ds.had.co.nz/transform.html
Español: https://es.r4ds.hadley.nz/05-transform.html
## # A tibble: 6 × 19
## anio mes dia horario_salida salida_programada atraso_salida
## <int> <int> <int> <int> <int> <dbl>
## 1 2013 1 1 517 515 2
## 2 2013 1 1 533 529 4
## 3 2013 1 1 542 540 2
## 4 2013 1 1 544 545 -1
## 5 2013 1 1 554 600 -6
## 6 2013 1 1 554 558 -4
## # ℹ 13 more variables: horario_llegada <int>, llegada_programada <int>,
## # atraso_llegada <dbl>, aerolinea <chr>, vuelo <int>, codigo_cola <chr>,
## # origen <chr>, destino <chr>, tiempo_vuelo <dbl>, distancia <dbl>,
## # hora <dbl>, minuto <dbl>, fecha_hora <dttm>
Tema de este modulo:
- Filtrar filas con filter()
- Seleccionar columnas con select()
- Agrupar con group_by()
- Resumir con summarise()
- Ordenar con arrange()
- funciones Booleanas y lógicas
6.2 Operaciones lógicas boolean:
- & “ampersand” == “conjunción”
- “|” or= “o”
- !, no incluye, excluir….
- %in%, filtrar para múltiples valores
- ==, es igual a… “exactamente”
- “<” menor que
- “>” mayor que
- “<=” es menor o igual
- “>=” es mayor o igual
Bollean, que incluye múltiples opciones %in%
vuelos %>%
dplyr::select(anio, mes, dia, atraso_llegada, destino) %>%
filter(destino =="SJU") %>%
filter(mes == 12 & dia ==25) %>%
# filter(mes == 12) %>%
group_by(dia, mes) %>%
summarise(atraso = mean(atraso_llegada, na.rm = TRUE))
## # A tibble: 1 × 3
## # Groups: dia [1]
## dia mes atraso
## <int> <int> <dbl>
## 1 25 12 3.57
vuelos %>%
dplyr::select(anio, mes, dia, atraso_salida) %>%
group_by(mes) %>%
filter(mes %in% c(1:6)) %>% # mes entre 1 y 6
summarise(atraso = mean(atraso_salida, na.rm = TRUE))
## # A tibble: 6 × 2
## mes atraso
## <int> <dbl>
## 1 1 10.0
## 2 2 10.8
## 3 3 13.2
## 4 4 13.9
## 5 5 13.0
## 6 6 20.8
6.2.1 Otra alternativa para filtrar
6.2.1.1 “|”
vuelos %>%
dplyr::select(anio, mes, dia, atraso_salida) %>%
filter(mes == 1 | mes == 12) |> # mes 1 o 12
summarise(atraso = mean(atraso_salida, na.rm = TRUE))
## # A tibble: 1 × 1
## atraso
## <dbl>
## 1 13.3
6.2.1.2 & el “y”
## [1] "anio" "mes" "dia"
## [4] "horario_salida" "salida_programada" "atraso_salida"
## [7] "horario_llegada" "llegada_programada" "atraso_llegada"
## [10] "aerolinea" "vuelo" "codigo_cola"
## [13] "origen" "destino" "tiempo_vuelo"
## [16] "distancia" "hora" "minuto"
## [19] "fecha_hora"
vuelos %>%
dplyr::select(anio, mes, dia, atraso_salida, aerolinea) %>%
filter(mes == 12 & dia == 25 & aerolinea=="AA")
## # A tibble: 78 × 5
## anio mes dia atraso_salida aerolinea
## <int> <int> <int> <dbl> <chr>
## 1 2013 12 25 2 AA
## 2 2013 12 25 -4 AA
## 3 2013 12 25 1 AA
## 4 2013 12 25 0 AA
## 5 2013 12 25 -3 AA
## 6 2013 12 25 -2 AA
## 7 2013 12 25 26 AA
## 8 2013 12 25 -7 AA
## 9 2013 12 25 -6 AA
## 10 2013 12 25 21 AA
## # ℹ 68 more rows
6.4
!, excluye algo, En este caso estamos excluyendo los días del 1 al 10
library(datos)
library(tidyverse)
vuelos %>%
dplyr::select(anio, mes, dia, atraso_salida, aerolinea) %>%
filter(mes == 11 & !aerolinea %in% c("AA", "DL")) %>%
group_by(aerolinea) %>%
summarise(atraso = mean(atraso_salida, na.rm = TRUE))
## # A tibble: 14 × 2
## aerolinea atraso
## <chr> <dbl>
## 1 9E 7.56
## 2 AS 3.08
## 3 B6 3.52
## 4 EV 9.83
## 5 F9 13.5
## 6 FL 16.9
## 7 HA -5.44
## 8 MQ 3.28
## 9 OO 0.8
## 10 UA 6.37
## 11 US 0.576
## 12 VX 7.80
## 13 WN 11.0
## 14 YV 10.5
Ejercicios:
Hacer los ejercicios en la sección 5.2.4 del libro en español
5.2.4 Ejercicios
Encuentra todos los vuelos que:
Tuvieron un retraso de llegada de dos o más horas
Volaron a Houston (IAH o HOU)
Cual son estos aeropuertos, Hou == Houston, IAH == George Bush, Texas
Seleciona solamente los vuelos que fueron operados por United, American o Delta
Selecciona solamente los vuelos que partieron en invierno del hemisferio sur (julio, agosto y septiembre)
Selecciona solamente los vuelos que llegaron más de dos horas tarde, pero no salieron tarde
Selecciona solamente los vuelos que se retrasaron por lo menos una hora, pero repusieron más de 30 minutos en vuelo
Selecciona solamente los vuelos que partieron entre la medianoche y las 6a.m. (incluyente)
Otra función de dplyr que es útil para usar filtros es between(). ¿Qué hace? ¿Puedes usarla para simplificar el código necesario para responder a los desafíos anteriores?
Determinar cual “aerolinea” tiene más vuelos
6.4.1 La función arrange()
arrange()
## # A tibble: 10 × 1
## horario_salida
## <int>
## 1 517
## 2 533
## 3 542
## 4 544
## 5 554
## 6 554
## 7 555
## 8 557
## 9 557
## 10 558
## # A tibble: 10 × 19
## anio mes dia horario_salida salida_programada atraso_salida
## <int> <int> <int> <int> <int> <dbl>
## 1 2013 10 30 2400 2359 1
## 2 2013 11 27 2400 2359 1
## 3 2013 12 5 2400 2359 1
## 4 2013 12 9 2400 2359 1
## 5 2013 12 9 2400 2250 70
## 6 2013 12 13 2400 2359 1
## 7 2013 12 19 2400 2359 1
## 8 2013 12 29 2400 1700 420
## 9 2013 2 7 2400 2359 1
## 10 2013 2 7 2400 2359 1
## # ℹ 13 more variables: horario_llegada <int>, llegada_programada <int>,
## # atraso_llegada <dbl>, aerolinea <chr>, vuelo <int>, codigo_cola <chr>,
## # origen <chr>, destino <chr>, tiempo_vuelo <dbl>, distancia <dbl>,
## # hora <dbl>, minuto <dbl>, fecha_hora <dttm>
5.3.1 Ejercicios
Ordena vuelos para encontrar los vuelos más retrasados en salida.
Encuentra los vuelos que salieron más temprano.
Ordena vuelos para encontrar los vuelos más rápidos (que viajaron a mayor velocidad).
¿Cuáles vuelos viajaron más lejos?
¿Cuál viajó más cerca?
Otra función
- desc()