9 Ejercicios: tidyverse

Cargar la data de nycfights13

9.1 Parte 1: Dplyr - filter

  1. Encuentra todos los vuelos que:
  • Tuvieron un retraso de llegada de dos o más horas
  • Volaron a Houston (IAH oHOU)
  • Fueron operados por United, American o Delta
  • Partieron en invierno del hemisferio sur (julio, agosto y septiembre)
  • Llegaron más de dos horas tarde, pero no salieron tarde
  • Se retrasaron por lo menos una hora, pero repusieron más de 30 minutos en vuelo
  • Partieron entre la medianoche y las 6 a.m. (incluyente)
  1. 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?
  2. ¿Cuántos vuelos tienen datos faltantes en horario_salida? ¿Qué otras variables tienen valores faltantes? ¿Qué representan estas filas?
  3. ¿Por qué NA^0 no es faltante? ¿Por qué NA | TRUE no es faltante? ¿Por qué FALSE & NA no es faltante? ¿Puedes descubrir la regla general? (¡NA * 0 es un contraejemplo complicado!)

9.2 Parte 2: Dplyr - arrange

  1. ¿Cómo podrías usar arrange() para ordenar todos los valores faltantes al comienzo? (Sugerencia: usa is.na()).
  2. Ordena vuelos para encontrar los vuelos más retrasados. Encuentra los vuelos que salieron más temprano.
  3. Ordena vuelos para encontrar los vuelos más rápidos (que viajaron a mayor velocidad).
  4. ¿Cuáles vuelos viajaron más lejos? ¿Cuál viajó más cerca?

9.3 Parte 3: Dplyr - select

  1. Haz una lluvia de ideas sobre tantas maneras como sea posible para seleccionar dep_time, dep_delay, arr_time, and arr_delay de flights.
  2. ¿Qué sucede si incluyes el nombre de una variable varias veces en una llamada a select()?
  3. ¿Qué hace la función any_of()? ¡¿Por qué podría ser útil en conjunto con este vector?

9.4 Parte 4: Dplyr - mutate

  1. Las variables horario_salida y salida_programada tienen un formato conveniente para leer, pero es difícil realizar cualquier cálculo con ellas porque no son realmente números continuos. Transfórmalas hacia un formato más conveniente como número de minutos desde la medianoche.
  2. Compara tiempo_vuelo con horario_llegada - horario_salida. ¿Qué esperas ver? ¿Qué ves? ¿Qué necesitas hacer para arreglarlo?
  3. Compara horario_salida, salida_programada, y atraso_salida. ¿Cómo esperarías que esos tres números estén relacionados?
  4. Encuentra los 10 vuelos más retrasados utilizando una función de ordenamiento. ¿Cómo quieres manejar los empates? Lee atentamente la documentación de min_rank().
  5. ¿Qué devuelve 1:3 + 1:10? ¿Por qué?
  6. ¿Qué funciones trigonométricas proporciona R?

9.5 Parte 5: Dplyr - group by & summarize

  1. Haz una lluvia de ideas de al menos 5 formas diferentes de evaluar las características de un retraso típico de un grupo de vuelos. Considera los siguientes escenarios:
  • Un vuelo llega 15 minutos antes 50% del tiempo, y 15 minutos tarde 50% del tiempo.
  • Un vuelo llega siempre 10 minutos tarde.
  • Un vuelo llega 30 minutos antes 50% del tiempo, y 30 minutos tarde 50% del tiempo.
  • Un vuelo llega a tiempo en el 99% de los casos. 1% de las veces llega 2 horas tarde. ¿Qué es más importante: retraso de la llegada o demora de salida?
  1. Sugiere un nuevo enfoque que te dé el mismo output que no_cancelados %>% count(destino) y no_cancelado %>% count(codigo_cola, wt = distancia) (sin usar count()).
  2. Nuestra definición de vuelos cancelados (is.na(atraso_salida) | is.na (atraso_llegada)) es un poco subóptima. ¿Por qué? ¿Cuál es la columna más importante?
  3. Mira la cantidad de vuelos cancelados por día. ¿Hay un patrón? ¿La proporción de vuelos cancelados está relacionada con el retraso promedio?
  4. ¿Qué compañía tiene los peores retrasos? Desafío: ¿puedes desenredar el efecto de malos aeropuertos vs. el efecto de malas aerolíneas? ¿Por qué o por qué no? (Sugerencia: piensa en vuelos %>% group_by(aerolinea, destino) %>% summarise(n()))
  5. ¿Qué hace el argumento sort a count(). ¿Cuándo podrías usarlo?

9.6 Parte 7: Dplyr - transformaciones agrupadas

  1. Remítete a las listas de funciones útiles de mutación y filtrado. Describe cómo cambia cada operación cuando las combinas con la agrupación.
  2. ¿Qué avión (codigo_cola) tiene el peor registro de tiempo?
  3. ¿A qué hora del día deberías volar si quieres evitar lo más posible los retrasos?
  4. Para cada destino, calcula los minutos totales de demora. Para cada vuelo, calcula la proporción de la demora total para su destino.
  5. Los retrasos suelen estar temporalmente correlacionados: incluso una vez que el problema que causó el retraso inicial se ha resuelto, los vuelos posteriores se retrasan para permitir que salgan los vuelos anteriores. Usando lag(), explora cómo el retraso de un vuelo está relacionado con el retraso del vuelo inmediatamente anterior.
  6. Mira cada destino. ¿Puedes encontrar vuelos sospechosamente rápidos? (es decir, vuelos que representan un posible error de entrada de datos). Calcula el tiempo en el aire de un vuelo relativo al vuelo más corto a ese destino. ¿Cuáles vuelos se retrasaron más en el aire?
  7. Encuentra todos los destinos que son volados por al menos dos operadores. Usa esta información para clasificar a las aerolíneas.
  8. Para cada avión, cuenta el número de vuelos antes del primer retraso de más de 1 hora.