1. Preparación de la base de datos.

1.1. Base de datos nycflights13

Definición

La base de datos nycflights13 contiene información solo sobre los vuelos que salieron de los tres principales aeropuertos de la ciudad de Nueva York en 2013:

1.  JFK (John F. Kennedy International Airport)
2.  LGA (LaGuardia Airport)
3.  EWR (Newark Liberty International Airport)

Definición

La tabla principal flights tiene las siguientes columnas:

1.  year: Año del vuelo (2013 en todos los casos).
2.  month: Mes del vuelo (1 = enero, 12 = diciembre).
3.  day: Día del vuelo.
4.  dep_time: Hora de salida real del vuelo (en formato HHMM).
5.  sched_dep_time: Hora de salida programada (en formato HHMM).
6.  dep_delay: Retraso de salida en minutos.
7.  arr_time: Hora de llegada real del vuelo (en formato HHMM).
8.  sched_arr_time: Hora de llegada programada (en formato HHMM).
9.  arr_delay: Retraso de llegada en minutos.
10. carrier: Código de la aerolínea.
11. flight: Número de vuelo.
12. tailnum: Número de matrícula del avión.
13. origin: Aeropuerto de origen (EWR, JFK, LGA).
14. dest: Aeropuerto de destino.
15. air_time: Tiempo de vuelo en minutos.
16. distance: Distancia del vuelo en millas.
17. hour: Hora de salida programada (en formato decimal).
18. minute: Minuto de salida programada (en formato decimal).
19. time_hour: Fecha y hora de la salida programada en formato datetime.

1.3. Instalar paquete nycflights13

Definición

Instalar el paquete (si no está instalado previamente):

1.  install.packages("nycflights13")

1.4. Cargar librería nycflights13

Definición

Cargar la librería en tu entorno de trabajo:

library(nycflights13)

1.5. Función colnames( )

Definición

La función colnames( ) en R se utiliza para obtener o establecer los nombres de las columnas de un marco de datos (data frame) o matriz.

Ejemplo Si quieres ver los nombres de las columnas de un data frame, puedes usar colnames(). En este ejemplo, usamos el data frame flights del paquete nycflights13:

colnames(flights)
##  [1] "year"           "month"          "day"            "dep_time"      
##  [5] "sched_dep_time" "dep_delay"      "arr_time"       "sched_arr_time"
##  [9] "arr_delay"      "carrier"        "flight"         "tailnum"       
## [13] "origin"         "dest"           "air_time"       "distance"      
## [17] "hour"           "minute"         "time_hour"

Ejemplo Puedes cambiar los nombres de las columnas asignando un vector con los nuevos nombres.

# Cambiar los nombres de las columnas 'year' y 'month'
colnames(flights)[1:2] <- c("año", "mes")

# Verificar los cambios
colnames(flights)
##  [1] "año"            "mes"            "day"            "dep_time"      
##  [5] "sched_dep_time" "dep_delay"      "arr_time"       "sched_arr_time"
##  [9] "arr_delay"      "carrier"        "flight"         "tailnum"       
## [13] "origin"         "dest"           "air_time"       "distance"      
## [17] "hour"           "minute"         "time_hour"
# Cambiar los nombres de las dos primeras columnas y la quinta columna de 'flights'
colnames(flights)[c(1, 2, 4,5)] <- c("año", "mes", "salida_real","salida_programada")

# Verificar los cambios
colnames(flights)
##  [1] "año"               "mes"               "day"              
##  [4] "salida_real"       "salida_programada" "dep_delay"        
##  [7] "arr_time"          "sched_arr_time"    "arr_delay"        
## [10] "carrier"           "flight"            "tailnum"          
## [13] "origin"            "dest"              "air_time"         
## [16] "distance"          "hour"              "minute"           
## [19] "time_hour"

2. Análisis de los datos.

2.1. Cargar librería dplyr

Definición

Cargar la librería en tu entorno de trabajo:

library(dplyr)

2.2. Función filter( )

Definición

La función filter( ) se utiliza para seleccionar filas que cumplen una o más condiciones en un data frame.

Ejemplo

# Seleccionar vuelos que partieron del aeropuerto JFK
salida_jfk <- filter(flights, origin == "JFK")
salida_jfk
## # A tibble: 111,279 × 19
##      año   mes   day salida_real salida_programada dep_delay arr_time
##    <int> <int> <int>       <int>             <int>     <dbl>    <int>
##  1  2013     1     1         542               540         2      923
##  2  2013     1     1         544               545        -1     1004
##  3  2013     1     1         557               600        -3      838
##  4  2013     1     1         558               600        -2      849
##  5  2013     1     1         558               600        -2      853
##  6  2013     1     1         558               600        -2      924
##  7  2013     1     1         559               559         0      702
##  8  2013     1     1         606               610        -4      837
##  9  2013     1     1         611               600        11      945
## 10  2013     1     1         613               610         3      925
## # ℹ 111,269 more rows
## # ℹ 12 more variables: sched_arr_time <int>, arr_delay <dbl>, carrier <chr>,
## #   flight <int>, tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>,
## #   distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>

Ejemplo

Los vuelos cancelas son aquellos que no tienen asignada dep_time o arr_time.

# Filtrar vuelos cancelados: aquellos donde 'salida_real' o 'arr_time' son NA
vuelos_cancelados <- flights %>%
  filter(is.na(salida_real) | is.na(arr_time))

vuelos_cancelados
## # A tibble: 8,713 × 19
##      año   mes   day salida_real salida_programada dep_delay arr_time
##    <int> <int> <int>       <int>             <int>     <dbl>    <int>
##  1  2013     1     1        2016              1930        46       NA
##  2  2013     1     1          NA              1630        NA       NA
##  3  2013     1     1          NA              1935        NA       NA
##  4  2013     1     1          NA              1500        NA       NA
##  5  2013     1     1          NA               600        NA       NA
##  6  2013     1     2        2041              2045        -4       NA
##  7  2013     1     2        2145              2129        16       NA
##  8  2013     1     2          NA              1540        NA       NA
##  9  2013     1     2          NA              1620        NA       NA
## 10  2013     1     2          NA              1355        NA       NA
## # ℹ 8,703 more rows
## # ℹ 12 more variables: sched_arr_time <int>, arr_delay <dbl>, carrier <chr>,
## #   flight <int>, tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>,
## #   distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>

2.2. Función arrange( )

Definición

La función arrange( ) se utiliza para ordenar las filas de un data frame en función de una o más variables.

Ejemplo

# Ordenar vuelos según la duración del vuelo (distance) de manera ascendente
dia_orden <- flights %>%
  arrange(day)
dia_orden
## # A tibble: 336,776 × 19
##      año   mes   day salida_real salida_programada dep_delay arr_time
##    <int> <int> <int>       <int>             <int>     <dbl>    <int>
##  1  2013     1     1         517               515         2      830
##  2  2013     1     1         533               529         4      850
##  3  2013     1     1         542               540         2      923
##  4  2013     1     1         544               545        -1     1004
##  5  2013     1     1         554               600        -6      812
##  6  2013     1     1         554               558        -4      740
##  7  2013     1     1         555               600        -5      913
##  8  2013     1     1         557               600        -3      709
##  9  2013     1     1         557               600        -3      838
## 10  2013     1     1         558               600        -2      753
## # ℹ 336,766 more rows
## # ℹ 12 more variables: sched_arr_time <int>, arr_delay <dbl>, carrier <chr>,
## #   flight <int>, tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>,
## #   distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>

Ejemplo

# Ordenar vuelos según el día (day) y la hora de salida (dep_time)
salida_real_orden <- flights %>%
  arrange(day, -salida_real)
salida_real_orden 
## # A tibble: 336,776 × 19
##      año   mes   day salida_real salida_programada dep_delay arr_time
##    <int> <int> <int>       <int>             <int>     <dbl>    <int>
##  1  2013     6     1        2359              2359         0      332
##  2  2013     7     1        2359              2049       190      239
##  3  2013     4     1        2358              2359        -1      350
##  4  2013     8     1        2358              2245        73      112
##  5  2013     3     1        2357              2355         2      451
##  6  2013     1     1        2356              2359        -3      425
##  7  2013     4     1        2356              2355         1      359
##  8  2013     5     1        2356              2359        -3      324
##  9  2013     2     1        2355              2359        -4      441
## 10  2013     5     1        2355              2359        -4      326
## # ℹ 336,766 more rows
## # ℹ 12 more variables: sched_arr_time <int>, arr_delay <dbl>, carrier <chr>,
## #   flight <int>, tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>,
## #   distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>

2.3. Función select( )

Definición

La función select( ) se utiliza para elegir columnas específicas de un data frame, permitiendo así reducir el número de columnas que se muestran o trabajan en un análisis.

Ejemplo

# Seleccionar las columnas day y salida_real del dataset flights y ordenarlas por day
vuelos_seleccionados <- flights %>%
  select(day, salida_real, distance) %>%
  arrange(day, salida_real)

vuelos_seleccionados
## # A tibble: 336,776 × 3
##      day salida_real distance
##    <int>       <int>    <dbl>
##  1     1           1     2586
##  2     1           2     1617
##  3     1           2     1598
##  4     1           4     1069
##  5     1           5     1617
##  6     1           9     2475
##  7     1           9     1576
##  8     1          12     1076
##  9     1          12     1617
## 10     1          13     1617
## # ℹ 336,766 more rows

2.4. Función mutate( )

Definición

La función mutate( ) se utiliza para añadir nuevas columnas o modificar las existentes en un data frame. Las nuevas columnas pueden ser el resultado de cálculos basados en las columnas actuales.

Ejemplo

# Añadir una nueva columna que convierta la distancia de millas a kilómetros
vuelos_modificados <- flights %>%
  mutate(distance_km = distance * 1.60934)

vuelos_modificados
## # A tibble: 336,776 × 20
##      año   mes   day salida_real salida_programada dep_delay arr_time
##    <int> <int> <int>       <int>             <int>     <dbl>    <int>
##  1  2013     1     1         517               515         2      830
##  2  2013     1     1         533               529         4      850
##  3  2013     1     1         542               540         2      923
##  4  2013     1     1         544               545        -1     1004
##  5  2013     1     1         554               600        -6      812
##  6  2013     1     1         554               558        -4      740
##  7  2013     1     1         555               600        -5      913
##  8  2013     1     1         557               600        -3      709
##  9  2013     1     1         557               600        -3      838
## 10  2013     1     1         558               600        -2      753
## # ℹ 336,766 more rows
## # ℹ 13 more variables: sched_arr_time <int>, arr_delay <dbl>, carrier <chr>,
## #   flight <int>, tailnum <chr>, origin <chr>, dest <chr>, air_time <dbl>,
## #   distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>,
## #   distance_km <dbl>

2.5. Función summarise( )

Definición

La función summarise( ) se utiliza para colapsar un data frame en una sola fila, aplicando funciones resumen (sum, mean, median, etc.) a las columnas seleccionadas. Generalmente se usa junto con group_by().

Ejemplo

# Calcular el promedio de la distancia de los vuelos en todo el conjunto de datos
resumen_general <- flights %>%
  summarise(promedio_distancia = mean(distance, na.rm = TRUE), total_vuelos = n())

resumen_general
## # A tibble: 1 × 2
##   promedio_distancia total_vuelos
##                <dbl>        <int>
## 1              1040.       336776

Ejemplo

# Calcular el promedio de distancia de vuelos por día
resumen_vuelos <- flights %>%
  group_by(day) %>%
  summarise(promedio_distancia = mean(distance, na.rm = TRUE))

resumen_vuelos
## # A tibble: 31 × 2
##      day promedio_distancia
##    <int>              <dbl>
##  1     1              1039.
##  2     2              1047.
##  3     3              1041.
##  4     4              1038.
##  5     5              1038.
##  6     6              1041.
##  7     7              1037.
##  8     8              1032.
##  9     9              1039.
## 10    10              1036.
## # ℹ 21 more rows

Evaluación 2

Evaluación 2

Debe evaluar la calidad del servicio prestado en tres aeropuertos (JFK, LGA, EWR) utilizando para ello el conjunto de datos de vuelos “flights”. Recuerda utilizar las librerias nycflights13, dplyr y ggplto2, para estudiar la eficiencia de cada aeropuerto:

  1. Utiliza summarise( ) y group_by( ) para contar el número de vuelos por aeropuerto y determinar cuál tiene el mayor tráfico,

  2. Agrupa los datos por aeropuerto y calcula el promedio de retraso en las salidas para cada uno.

  3. Calcula la desviación estándar sd( ) del retraso en las arr_time y dep_delay para cada aeropuerto y determina cuál tiene la mayor variabilidad.

  4. Crea un gráfico de barras para visualizar la distribución promedio por mes del dep_delay por aeropuerto.

  5. Agrupa los datos por aeropuerto y mes, y luego visualiza con un gráfico de líneas cómo cambia el retraso promedio a lo largo del año.

  6. Calcula el porcentaje de vuelos cancelados por aeropuerto y determina cuál tiene la menor tasa de cancelaciones.

  7. Define los vuelos “a tiempo” como aquellos con un retraso de salida (dep_delay) de 0 o menos minutos, y calcula el porcentaje de estos vuelos por aeropuerto.

  8. Identifica cuál es el avión (por número de cola tailnum) más utilizado en cada aeropuerto.

  9. Elabora una conclución respecto a la eficiencia de los aeropuesrtos EWR, JFK, LGA.

  10. El trabajo debe enviarse a revisión a través del ambiente de aprendizaje y en formato pdf.