library(learnr) knitr::opts_chunk$set(echo = FALSE) library(ggplot2) library(dplyr) library(tidyr) library(plotly) library(hflights) library(janitor) library(lubridate) library(visdat) vuelos <- hflights %>% clean_names() vuelos <- vuelos %>% unite(year, month, dayof_month, col = "fecha", sep = "-") %>% mutate(fecha = ymd(fecha)) mayores_atrasos <- vuelos %>% group_by(dest) %>% summarise( promedio = mean(arr_delay, na.rm = TRUE) ) %>% arrange(desc(promedio)) %>% slice(1:10) %>% select(dest) %>% pull() destinos_atrasos <- vuelos %>% filter(dest %in% mayores_atrasos) sfo <- vuelos %>% filter(dest == "SFO") vuelos_cancelados <- vuelos %>% group_by(unique_carrier) %>% summarise( total = sum(cancelled, na.rm = TRUE) ) %>% arrange(desc(total)) %>% slice(1:5) %>% select(unique_carrier) %>% pull() vuelos_cancelados <- vuelos %>% filter(unique_carrier %in% vuelos_cancelados) vuelos_por_aerolinea <- vuelos_cancelados %>% mutate(mes = month(fecha)) %>% group_by(unique_carrier, mes) %>% tally() vuelos_cancelados_mes <- vuelos_cancelados %>% mutate(mes = month(fecha)) aerolineas_vuelos <- vuelos_cancelados_mes %>% left_join(vuelos_por_aerolinea, by = c("unique_carrier", "mes")) cancelaciones_por_aerolinea <- vuelos_cancelados %>% mutate(mes = month(fecha)) %>% group_by(unique_carrier, mes) %>% summarise(total_cancelaciones = sum(cancelled) ) aerolineas_vuelos <- aerolineas_vuelos %>% left_join(cancelaciones_por_aerolinea, by = c("unique_carrier", "mes")) aerolineas_vuelos <- aerolineas_vuelos %>% mutate(cancelaciones_proporcional = total_cancelaciones / n)
knitr::include_graphics("https://storage.googleapis.com/datos_cursos/ixpantia_introR/ixpantia_logo.png")
vuelos
Los datos de la sesión provienen del set de datos hflights, el cual coniene los vuelos que salieron de los aeropuertos de Houston, Estados Unidos (IAH y HOU) en el 2011. Usaremos vuelos_cancelados para los ejercicios ya que para los ejercicios solo queremos analizar los vuelos cancelados. vuelos_cancelados tiene 19 variables y 209,137 observaciones.
glimpse(vuelos_cancelados)
Descripción de las variables:
| Variable | Descripción |
| :----------: | :---------------------: |
| fecha
| Fecha en la que se dió el vuelo |
| day_of_week
| Día de la semana en el que ocurrió el vuelo |
| dep_time
| Hora de salida |
| arr_time
| Hora de llegada |
| unique_carrier
| Abreviación de la aerolínea |
| flight_num
| Número de vuelo |
| tail_num
| Número de la cola del avión |
| actual_elapsed_time
| Tiempo transcurrido en minutos |
| air_time
| Tiempo de vuelo en minutos |
| arr_delay
| Retraso de llegada en minutos |
| dep_delay
| Retraso de salida en minutos |
| origin
| Lugar de donde salió el vuelo |
| dest
| Destino del vuelo |
| distance
| Distancia del vuelo en millas |
| taxi_in
| Tiempo desde que el avión aterriza hasta que llega a su ala |
| taxi_out
| Tiempo que dura el avión es despegar desde que empieza a impulsarse |
| cancelled
| Indicador de si el vuelo fue cancelado o no |
| cancellation_code
| Razón de cancelación: A = aerolínea, B = clima, C = sistema, D = seguridad |
| diverted
| Indicador de si el vuelo fue desviado o no |
Queremos responder las preguntas:
Para responder esto, vamos a dividir el proceso en pasos:
Cree un nuevo set de datos que, partiendo de vuelos_cancelados, tenga una
nueva variable llamada mes
que represente el mes dentro de fecha
y luego
agrupe por aerolínea (unique_carrier
) y por mes
. Por último debe "contar"
los vuelos que resultan usando tally()
.
vuelos_por_aerolinea <- vuelos_cancelados %>%
vuelos_por_aerolinea <- vuelos_cancelados %>% mutate(mes = month(fecha)) %>% group_by(unique_carrier, mes) %>% tally()
mes
a vuelos_cancelados en un nuevo set de datosCree un nuevo conjunto de datos que le agregue la columna mes
creada en el
ejercicio anterior a vuelos_cancelados
vuelos_cancelados_mes <- vuelos_cancelados %>%
vuelos_cancelados_mes <- vuelos_cancelados %>% mutate(mes = month(fecha))
Anteriormente creamos dos sets de datos: vuelos_por_aerolinea y vuelos_cancelados_mes. Ahora unalos para obtener un conjunto de datos con el mes y la cantidad de vuelos cancelados por aerolínea.
aerolineas_vuelos <-
aerolineas_vuelos <- vuelos_cancelados_mes %>% left_join(vuelos_por_aerolinea, by = c("unique_carrier", "mes"))
Partiendo de vuelos cancelados, cree un nuevo conjunto de datos donde hayan
3 columnas: la aerolínea (unique_carrier
), mes
, y el total de cancelaciones
(total_cancelaciones
).
cancelaciones_por_aerolinea <- vuelos_cancelados %>%
cancelaciones_por_aerolinea <- vuelos_cancelados %>% mutate(mes = month(fecha)) %>% group_by(unique_carrier, mes) %>% summarise(total_cancelaciones = sum(cancelled))
Anteriormente creamos dos sets de datos: aerolineas_vuelos y cancelaciones_por_aerolinea. Ahora unalos para obtener un conjunto de datos con lo que tenia aerolineas_vuelos más el total de cancelaciones por aerolínea. Llámelo aerolineas_vuelos nuevamente.
aerolineas_vuelos <-
aerolineas_vuelos <- aerolineas_vuelos %>% left_join(cancelaciones_por_aerolinea, by = c("unique_carrier", "mes"))
Hemos estado trabajando en el set de datos aerolineas_vuelos pero aun falta
agregarle una columna que sea la proporción del total de cancelaciones para cada
aerolínea. Llame a esta nueva variable cancelaciones_proporcional
.
aerolineas_vuelos <- aerolineas_vuelos %>%
aerolineas_vuelos <- aerolineas_vuelos %>% mutate(cancelaciones_proporcional = total_cancelaciones / n)
Usando el set de datos aerolineas_vuelos cree un gráfico donde el eje y sea
cancelaciones_proporcional
y el eje x mes
y que además permite diferenciar
por aerolínea (unique_carrier
). Puede hacer as.factor(mes)
para que sea
visualmente más placentero el gráfico.
ggplot(aerolineas_vuelos)
ggplot(aerolineas_vuelos, aes( x = as.factor(mes), y = cancelaciones_proporcional, group = unique_carrier, fill = unique_carrier)) + geom_bar(stat = "summary", fun.y = "mean", position = "dodge")
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.