AGREGAR IMAGEN
…………..
El paquete nycflights13 contiene información sore todos los vueles que partieron desde Nueva York(EWR, JFL, LGA) en destinos a los Estados Unidos en 2013. Fueron 336,776 vuelos en total. Para ayudar a comprender las causas de los retrasos, también incluye otros ocnjuntos de datos útiles.
Este paquete incluye las siguientes tablas:
Fuente: Origen de los datos
#install.packages("nycflight13")
library(nycflights13)
#install.packages("tidyverse")
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.3.3
## Warning: package 'ggplot2' was built under R version 4.3.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.4
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.0 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.0
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
#install.packages("dplyr")
library(dplyr)
#install.packages("ggplot2")
library(ggplot2)
#install.packages("")
library(broom)
## Warning: package 'broom' was built under R version 4.3.3
flights <- flights
weather <- weather
planes <- planes
airports <- airports
airlines <- airlines
agregar imagen
La función select sirve para seleccionar columnos de un table (data frame).
df1 <- flights %>% select(carrier, flight) # Selección de columnas específicas
df2 <- flights %>% select(carrier:distance) # Selección de rango de columnas
df3 <- flights %>% select(-carrier, -flight) # Eliminar columnas específicas
df4 <- flights %>% select(-carrier: -flight) # Eliminar rango de columnas
df5 <- flights %>% select(aerolinea = carrier) # Selecciona una columna y le cambia el nombre
df6 <- flights %>% rename(aerolinea = carrier) # Cambia el nombre de una columna
La función Filter sirve para seleccionar renglones de un tabla(data frame).
df7 <- flights %>% filter(dep_delay >=500) # Extrae renglones que cumplan condición
# Condicionales: Igual ==, Desigual =!=, Mayor que >, Mayor o igual que >=, Menor o igual que <=
# Operadores lógicos: AND &, OR |, NOT !
df8 <- flights %>% filter(dep_delay >=500, dep_delay <=600) # Extrae renglones que cumplan con dos condiciones
df9 <- flights %>% slice(1000: 1099) # Extrae los números de los renglones indicados, sin importar sus valores
La función distinct sirve para eliminar renglones duplicados.
df10 <- distinct(flights) # Dejar solo los renglones diferentes, borra todos los repetidos.
La función merge sirve para juntar bases de datos.
bdgrande <- merge(flights, airlines, by="carrier")
bdgrande2 <- merge(bdgrande,planes, by="tailnum")
bdgrande3 <- mutate(bdgrande2, dist_mts = distance*1.609)
#Agrega variables nuevas caluladas a partir de variables existentes en la base de datos.
ejercicio1 <- bdgrande2 %>% filter(arr_delay>=120)
ejercicio2 <- bdgrande2 %>% filter(dest== "IAH" | dest == "HOU")
ejercicio3 <- bdgrande2 %>% filter(carrier %in% c("UA", "AA", "DL"))
ejercicio4 <- bdgrande2 %>% filter(month %in% c(7, 8, 9))
ejercicio4a <- bdgrande2 %>% filter(month == 7 | month == 8 | month == 9)
ejercicio5 <- bdgrande2 %>% filter(arr_delay>120 & dep_time == sched_dep_time)
ejercicio5a <- bdgrande2 %>% filter(arr_delay>120 & dep_delay<=0)
ejercicio6 <- bdgrande2 %>% filter(dep_delay>=60 & arr_delay<=-30)
ejercicio7 <- bdgrande2 %>% filter(dep_time %in% c("2400", "100", "200", "300", "400", "500", "600"))
ejercicio7a <- bdgrande2 %>% filter(dep_time==2400 | dep_time<=600)
ejercicio7b <- bdgrande2 %>% filter(hour %in% c("0", "1", "2", "3", "4", "5", "6"))
Similar a filter () pero en lugar de seleccionar renglones, los ordena de menor a mayor.
df11 <- arrange(bdgrande2, year.x, month, day)
Para acomodar de mayor a menor.
df12 <- arrange(bdgrande2, year.x, desc(month), day)
Colapsa una tabla a un sólo renglón
# Obtén el retraso promedio de salida de despegue de todos los vuelos
summarize(bdgrande2, mean(dep_delay, na.rm=TRUE))
## mean(dep_delay, na.rm = TRUE)
## 1 13.17979
Agrupa tabla basado en algunas columnas.
# Obtener el retraso promedio de despegue por día
por_dia <- group_by(bdgrande2, year.x, month, day)
summarize(por_dia, mean(dep_delay, na.rm=TRUE))
## `summarise()` has grouped output by 'year.x', 'month'. You can override using
## the `.groups` argument.
## # A tibble: 365 × 4
## # Groups: year.x, month [12]
## year.x month day `mean(dep_delay, na.rm = TRUE)`
## <int> <int> <int> <dbl>
## 1 2013 1 1 10.7
## 2 2013 1 2 14.4
## 3 2013 1 3 11.1
## 4 2013 1 4 10.0
## 5 2013 1 5 5.70
## 6 2013 1 6 7.98
## 7 2013 1 7 6.49
## 8 2013 1 8 3.10
## 9 2013 1 9 3.17
## 10 2013 1 10 1.89
## # ℹ 355 more rows
# La carga a a memoria se hizo en el paso anterior
flights
## # A tibble: 336,776 × 19
## year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time
## <int> <int> <int> <int> <int> <dbl> <int> <int>
## 1 2013 1 1 517 515 2 830 819
## 2 2013 1 1 533 529 4 850 830
## 3 2013 1 1 542 540 2 923 850
## 4 2013 1 1 544 545 -1 1004 1022
## 5 2013 1 1 554 600 -6 812 837
## 6 2013 1 1 554 558 -4 740 728
## 7 2013 1 1 555 600 -5 913 854
## 8 2013 1 1 557 600 -3 709 723
## 9 2013 1 1 557 600 -3 838 846
## 10 2013 1 1 558 600 -2 753 745
## # ℹ 336,766 more rows
## # ℹ 11 more variables: 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>
str(flights)
## tibble [336,776 × 19] (S3: tbl_df/tbl/data.frame)
## $ year : int [1:336776] 2013 2013 2013 2013 2013 2013 2013 2013 2013 2013 ...
## $ month : int [1:336776] 1 1 1 1 1 1 1 1 1 1 ...
## $ day : int [1:336776] 1 1 1 1 1 1 1 1 1 1 ...
## $ dep_time : int [1:336776] 517 533 542 544 554 554 555 557 557 558 ...
## $ sched_dep_time: int [1:336776] 515 529 540 545 600 558 600 600 600 600 ...
## $ dep_delay : num [1:336776] 2 4 2 -1 -6 -4 -5 -3 -3 -2 ...
## $ arr_time : int [1:336776] 830 850 923 1004 812 740 913 709 838 753 ...
## $ sched_arr_time: int [1:336776] 819 830 850 1022 837 728 854 723 846 745 ...
## $ arr_delay : num [1:336776] 11 20 33 -18 -25 12 19 -14 -8 8 ...
## $ carrier : chr [1:336776] "UA" "UA" "AA" "B6" ...
## $ flight : int [1:336776] 1545 1714 1141 725 461 1696 507 5708 79 301 ...
## $ tailnum : chr [1:336776] "N14228" "N24211" "N619AA" "N804JB" ...
## $ origin : chr [1:336776] "EWR" "LGA" "JFK" "JFK" ...
## $ dest : chr [1:336776] "IAH" "IAH" "MIA" "BQN" ...
## $ air_time : num [1:336776] 227 227 160 183 116 150 158 53 140 138 ...
## $ distance : num [1:336776] 1400 1416 1089 1576 762 ...
## $ hour : num [1:336776] 5 5 5 5 6 5 6 6 6 6 ...
## $ minute : num [1:336776] 15 29 40 45 0 58 0 0 0 0 ...
## $ time_hour : POSIXct[1:336776], format: "2013-01-01 05:00:00" "2013-01-01 05:00:00" ...
# int:entero (sin decimales)
# num:numérico (con decimales)
# chr: caractér (letras)
# date: fecha (en R va año-mes-dia)
# POSIXct:formato fecha y hora
class(flights)
## [1] "tbl_df" "tbl" "data.frame"
# Las 5 clases de objetos
# 1. numeric: Número real o décimal
# 2. integer: Números enteros
# 3. Complex: Números complejos
# 4. Character: Caractéres
# 5. Logical: TRUE o FALSE
# Las 4 clases de objetos compuestos son:
# 1. list: lista
# 2. Matrix: Matriz
# 3. Array: colección de objetos
# 4. data.frame: base de datos
# Número de columnas
ncol(flights)
## [1] 19
# Numero de renglones
nrow(flights)
## [1] 336776
# Dimensión
dim(flights)
## [1] 336776 19
head(flights)
## # A tibble: 6 × 19
## year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time
## <int> <int> <int> <int> <int> <dbl> <int> <int>
## 1 2013 1 1 517 515 2 830 819
## 2 2013 1 1 533 529 4 850 830
## 3 2013 1 1 542 540 2 923 850
## 4 2013 1 1 544 545 -1 1004 1022
## 5 2013 1 1 554 600 -6 812 837
## 6 2013 1 1 554 558 -4 740 728
## # ℹ 11 more variables: 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>
tail(flights)
## # A tibble: 6 × 19
## year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time
## <int> <int> <int> <int> <int> <dbl> <int> <int>
## 1 2013 9 30 NA 1842 NA NA 2019
## 2 2013 9 30 NA 1455 NA NA 1634
## 3 2013 9 30 NA 2200 NA NA 2312
## 4 2013 9 30 NA 1210 NA NA 1330
## 5 2013 9 30 NA 1159 NA NA 1344
## 6 2013 9 30 NA 840 NA NA 1020
## # ℹ 11 more variables: 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>
# Si quisieramos 7 renglones: head(flights,7)
summary(flights)
## year month day dep_time sched_dep_time
## Min. :2013 Min. : 1.000 Min. : 1.00 Min. : 1 Min. : 106
## 1st Qu.:2013 1st Qu.: 4.000 1st Qu.: 8.00 1st Qu.: 907 1st Qu.: 906
## Median :2013 Median : 7.000 Median :16.00 Median :1401 Median :1359
## Mean :2013 Mean : 6.549 Mean :15.71 Mean :1349 Mean :1344
## 3rd Qu.:2013 3rd Qu.:10.000 3rd Qu.:23.00 3rd Qu.:1744 3rd Qu.:1729
## Max. :2013 Max. :12.000 Max. :31.00 Max. :2400 Max. :2359
## NA's :8255
## dep_delay arr_time sched_arr_time arr_delay
## Min. : -43.00 Min. : 1 Min. : 1 Min. : -86.000
## 1st Qu.: -5.00 1st Qu.:1104 1st Qu.:1124 1st Qu.: -17.000
## Median : -2.00 Median :1535 Median :1556 Median : -5.000
## Mean : 12.64 Mean :1502 Mean :1536 Mean : 6.895
## 3rd Qu.: 11.00 3rd Qu.:1940 3rd Qu.:1945 3rd Qu.: 14.000
## Max. :1301.00 Max. :2400 Max. :2359 Max. :1272.000
## NA's :8255 NA's :8713 NA's :9430
## carrier flight tailnum origin
## Length:336776 Min. : 1 Length:336776 Length:336776
## Class :character 1st Qu.: 553 Class :character Class :character
## Mode :character Median :1496 Mode :character Mode :character
## Mean :1972
## 3rd Qu.:3465
## Max. :8500
##
## dest air_time distance hour
## Length:336776 Min. : 20.0 Min. : 17 Min. : 1.00
## Class :character 1st Qu.: 82.0 1st Qu.: 502 1st Qu.: 9.00
## Mode :character Median :129.0 Median : 872 Median :13.00
## Mean :150.7 Mean :1040 Mean :13.18
## 3rd Qu.:192.0 3rd Qu.:1389 3rd Qu.:17.00
## Max. :695.0 Max. :4983 Max. :23.00
## NA's :9430
## minute time_hour
## Min. : 0.00 Min. :2013-01-01 05:00:00.00
## 1st Qu.: 8.00 1st Qu.:2013-04-04 13:00:00.00
## Median :29.00 Median :2013-07-03 10:00:00.00
## Mean :26.23 Mean :2013-07-03 05:22:54.64
## 3rd Qu.:44.00 3rd Qu.:2013-10-01 07:00:00.00
## Max. :59.00 Max. :2013-12-31 23:00:00.00
##
En este trabajo pudimos utlizar las funciones más comunes del análisis exploratorio, el cual es el primer paso para cualquier trabajo de manipulación de datos.
# Consulta la estructura de cada data frame
# Para el data frame flights
data(flights)
str(flights)
## tibble [336,776 × 19] (S3: tbl_df/tbl/data.frame)
## $ year : int [1:336776] 2013 2013 2013 2013 2013 2013 2013 2013 2013 2013 ...
## $ month : int [1:336776] 1 1 1 1 1 1 1 1 1 1 ...
## $ day : int [1:336776] 1 1 1 1 1 1 1 1 1 1 ...
## $ dep_time : int [1:336776] 517 533 542 544 554 554 555 557 557 558 ...
## $ sched_dep_time: int [1:336776] 515 529 540 545 600 558 600 600 600 600 ...
## $ dep_delay : num [1:336776] 2 4 2 -1 -6 -4 -5 -3 -3 -2 ...
## $ arr_time : int [1:336776] 830 850 923 1004 812 740 913 709 838 753 ...
## $ sched_arr_time: int [1:336776] 819 830 850 1022 837 728 854 723 846 745 ...
## $ arr_delay : num [1:336776] 11 20 33 -18 -25 12 19 -14 -8 8 ...
## $ carrier : chr [1:336776] "UA" "UA" "AA" "B6" ...
## $ flight : int [1:336776] 1545 1714 1141 725 461 1696 507 5708 79 301 ...
## $ tailnum : chr [1:336776] "N14228" "N24211" "N619AA" "N804JB" ...
## $ origin : chr [1:336776] "EWR" "LGA" "JFK" "JFK" ...
## $ dest : chr [1:336776] "IAH" "IAH" "MIA" "BQN" ...
## $ air_time : num [1:336776] 227 227 160 183 116 150 158 53 140 138 ...
## $ distance : num [1:336776] 1400 1416 1089 1576 762 ...
## $ hour : num [1:336776] 5 5 5 5 6 5 6 6 6 6 ...
## $ minute : num [1:336776] 15 29 40 45 0 58 0 0 0 0 ...
## $ time_hour : POSIXct[1:336776], format: "2013-01-01 05:00:00" "2013-01-01 05:00:00" ...
ncol(flights)
## [1] 19
nrow(flights)
## [1] 336776
dim(flights)
## [1] 336776 19
head(flights)
## # A tibble: 6 × 19
## year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time
## <int> <int> <int> <int> <int> <dbl> <int> <int>
## 1 2013 1 1 517 515 2 830 819
## 2 2013 1 1 533 529 4 850 830
## 3 2013 1 1 542 540 2 923 850
## 4 2013 1 1 544 545 -1 1004 1022
## 5 2013 1 1 554 600 -6 812 837
## 6 2013 1 1 554 558 -4 740 728
## # ℹ 11 more variables: 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>
tail(flights)
## # A tibble: 6 × 19
## year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time
## <int> <int> <int> <int> <int> <dbl> <int> <int>
## 1 2013 9 30 NA 1842 NA NA 2019
## 2 2013 9 30 NA 1455 NA NA 1634
## 3 2013 9 30 NA 2200 NA NA 2312
## 4 2013 9 30 NA 1210 NA NA 1330
## 5 2013 9 30 NA 1159 NA NA 1344
## 6 2013 9 30 NA 840 NA NA 1020
## # ℹ 11 more variables: 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>
summary(flights)
## year month day dep_time sched_dep_time
## Min. :2013 Min. : 1.000 Min. : 1.00 Min. : 1 Min. : 106
## 1st Qu.:2013 1st Qu.: 4.000 1st Qu.: 8.00 1st Qu.: 907 1st Qu.: 906
## Median :2013 Median : 7.000 Median :16.00 Median :1401 Median :1359
## Mean :2013 Mean : 6.549 Mean :15.71 Mean :1349 Mean :1344
## 3rd Qu.:2013 3rd Qu.:10.000 3rd Qu.:23.00 3rd Qu.:1744 3rd Qu.:1729
## Max. :2013 Max. :12.000 Max. :31.00 Max. :2400 Max. :2359
## NA's :8255
## dep_delay arr_time sched_arr_time arr_delay
## Min. : -43.00 Min. : 1 Min. : 1 Min. : -86.000
## 1st Qu.: -5.00 1st Qu.:1104 1st Qu.:1124 1st Qu.: -17.000
## Median : -2.00 Median :1535 Median :1556 Median : -5.000
## Mean : 12.64 Mean :1502 Mean :1536 Mean : 6.895
## 3rd Qu.: 11.00 3rd Qu.:1940 3rd Qu.:1945 3rd Qu.: 14.000
## Max. :1301.00 Max. :2400 Max. :2359 Max. :1272.000
## NA's :8255 NA's :8713 NA's :9430
## carrier flight tailnum origin
## Length:336776 Min. : 1 Length:336776 Length:336776
## Class :character 1st Qu.: 553 Class :character Class :character
## Mode :character Median :1496 Mode :character Mode :character
## Mean :1972
## 3rd Qu.:3465
## Max. :8500
##
## dest air_time distance hour
## Length:336776 Min. : 20.0 Min. : 17 Min. : 1.00
## Class :character 1st Qu.: 82.0 1st Qu.: 502 1st Qu.: 9.00
## Mode :character Median :129.0 Median : 872 Median :13.00
## Mean :150.7 Mean :1040 Mean :13.18
## 3rd Qu.:192.0 3rd Qu.:1389 3rd Qu.:17.00
## Max. :695.0 Max. :4983 Max. :23.00
## NA's :9430
## minute time_hour
## Min. : 0.00 Min. :2013-01-01 05:00:00.00
## 1st Qu.: 8.00 1st Qu.:2013-04-04 13:00:00.00
## Median :29.00 Median :2013-07-03 10:00:00.00
## Mean :26.23 Mean :2013-07-03 05:22:54.64
## 3rd Qu.:44.00 3rd Qu.:2013-10-01 07:00:00.00
## Max. :59.00 Max. :2013-12-31 23:00:00.00
##
¿Cuáles son los campos y sus tipos de datos? Los campos del conjunto de datos flights y sus tipos de datos son:
# Para el data frame weather
data(weather)
str(weather)
## tibble [26,115 × 15] (S3: tbl_df/tbl/data.frame)
## $ origin : chr [1:26115] "EWR" "EWR" "EWR" "EWR" ...
## $ year : int [1:26115] 2013 2013 2013 2013 2013 2013 2013 2013 2013 2013 ...
## $ month : int [1:26115] 1 1 1 1 1 1 1 1 1 1 ...
## $ day : int [1:26115] 1 1 1 1 1 1 1 1 1 1 ...
## $ hour : int [1:26115] 1 2 3 4 5 6 7 8 9 10 ...
## $ temp : num [1:26115] 39 39 39 39.9 39 ...
## $ dewp : num [1:26115] 26.1 27 28 28 28 ...
## $ humid : num [1:26115] 59.4 61.6 64.4 62.2 64.4 ...
## $ wind_dir : num [1:26115] 270 250 240 250 260 240 240 250 260 260 ...
## $ wind_speed: num [1:26115] 10.36 8.06 11.51 12.66 12.66 ...
## $ wind_gust : num [1:26115] NA NA NA NA NA NA NA NA NA NA ...
## $ precip : num [1:26115] 0 0 0 0 0 0 0 0 0 0 ...
## $ pressure : num [1:26115] 1012 1012 1012 1012 1012 ...
## $ visib : num [1:26115] 10 10 10 10 10 10 10 10 10 10 ...
## $ time_hour : POSIXct[1:26115], format: "2013-01-01 01:00:00" "2013-01-01 02:00:00" ...
ncol(weather)
## [1] 15
nrow(weather)
## [1] 26115
dim(weather)
## [1] 26115 15
head(weather)
## # A tibble: 6 × 15
## origin year month day hour temp dewp humid wind_dir wind_speed wind_gust
## <chr> <int> <int> <int> <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 EWR 2013 1 1 1 39.0 26.1 59.4 270 10.4 NA
## 2 EWR 2013 1 1 2 39.0 27.0 61.6 250 8.06 NA
## 3 EWR 2013 1 1 3 39.0 28.0 64.4 240 11.5 NA
## 4 EWR 2013 1 1 4 39.9 28.0 62.2 250 12.7 NA
## 5 EWR 2013 1 1 5 39.0 28.0 64.4 260 12.7 NA
## 6 EWR 2013 1 1 6 37.9 28.0 67.2 240 11.5 NA
## # ℹ 4 more variables: precip <dbl>, pressure <dbl>, visib <dbl>,
## # time_hour <dttm>
tail(weather)
## # A tibble: 6 × 15
## origin year month day hour temp dewp humid wind_dir wind_speed wind_gust
## <chr> <int> <int> <int> <int> <dbl> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 LGA 2013 12 30 13 37.0 21.9 54.0 340 17.3 20.7
## 2 LGA 2013 12 30 14 36.0 19.9 51.8 340 13.8 21.9
## 3 LGA 2013 12 30 15 34.0 17.1 49.5 330 17.3 21.9
## 4 LGA 2013 12 30 16 32 15.1 49.2 340 15.0 23.0
## 5 LGA 2013 12 30 17 30.9 12.9 46.7 320 17.3 NA
## 6 LGA 2013 12 30 18 28.9 10.9 46.4 330 18.4 NA
## # ℹ 4 more variables: precip <dbl>, pressure <dbl>, visib <dbl>,
## # time_hour <dttm>
summary(weather)
## origin year month day
## Length:26115 Min. :2013 Min. : 1.000 Min. : 1.00
## Class :character 1st Qu.:2013 1st Qu.: 4.000 1st Qu.: 8.00
## Mode :character Median :2013 Median : 7.000 Median :16.00
## Mean :2013 Mean : 6.504 Mean :15.68
## 3rd Qu.:2013 3rd Qu.: 9.000 3rd Qu.:23.00
## Max. :2013 Max. :12.000 Max. :31.00
##
## hour temp dewp humid
## Min. : 0.00 Min. : 10.94 Min. :-9.94 Min. : 12.74
## 1st Qu.: 6.00 1st Qu.: 39.92 1st Qu.:26.06 1st Qu.: 47.05
## Median :11.00 Median : 55.40 Median :42.08 Median : 61.79
## Mean :11.49 Mean : 55.26 Mean :41.44 Mean : 62.53
## 3rd Qu.:17.00 3rd Qu.: 69.98 3rd Qu.:57.92 3rd Qu.: 78.79
## Max. :23.00 Max. :100.04 Max. :78.08 Max. :100.00
## NA's :1 NA's :1 NA's :1
## wind_dir wind_speed wind_gust precip
## Min. : 0.0 Min. : 0.000 Min. :16.11 Min. :0.000000
## 1st Qu.:120.0 1st Qu.: 6.905 1st Qu.:20.71 1st Qu.:0.000000
## Median :220.0 Median : 10.357 Median :24.17 Median :0.000000
## Mean :199.8 Mean : 10.518 Mean :25.49 Mean :0.004469
## 3rd Qu.:290.0 3rd Qu.: 13.809 3rd Qu.:28.77 3rd Qu.:0.000000
## Max. :360.0 Max. :1048.361 Max. :66.75 Max. :1.210000
## NA's :460 NA's :4 NA's :20778
## pressure visib time_hour
## Min. : 983.8 Min. : 0.000 Min. :2013-01-01 01:00:00.0
## 1st Qu.:1012.9 1st Qu.:10.000 1st Qu.:2013-04-01 21:30:00.0
## Median :1017.6 Median :10.000 Median :2013-07-01 14:00:00.0
## Mean :1017.9 Mean : 9.255 Mean :2013-07-01 18:26:37.7
## 3rd Qu.:1023.0 3rd Qu.:10.000 3rd Qu.:2013-09-30 13:00:00.0
## Max. :1042.1 Max. :10.000 Max. :2013-12-30 18:00:00.0
## NA's :2729
¿Cuáles son los campos y sus tipos de datos? Los campos del conjunto de datos weather y sus tipos de datos son:
# Para el data frame planes
data(planes)
str(planes)
## tibble [3,322 × 9] (S3: tbl_df/tbl/data.frame)
## $ tailnum : chr [1:3322] "N10156" "N102UW" "N103US" "N104UW" ...
## $ year : int [1:3322] 2004 1998 1999 1999 2002 1999 1999 1999 1999 1999 ...
## $ type : chr [1:3322] "Fixed wing multi engine" "Fixed wing multi engine" "Fixed wing multi engine" "Fixed wing multi engine" ...
## $ manufacturer: chr [1:3322] "EMBRAER" "AIRBUS INDUSTRIE" "AIRBUS INDUSTRIE" "AIRBUS INDUSTRIE" ...
## $ model : chr [1:3322] "EMB-145XR" "A320-214" "A320-214" "A320-214" ...
## $ engines : int [1:3322] 2 2 2 2 2 2 2 2 2 2 ...
## $ seats : int [1:3322] 55 182 182 182 55 182 182 182 182 182 ...
## $ speed : int [1:3322] NA NA NA NA NA NA NA NA NA NA ...
## $ engine : chr [1:3322] "Turbo-fan" "Turbo-fan" "Turbo-fan" "Turbo-fan" ...
ncol(planes)
## [1] 9
nrow(planes)
## [1] 3322
dim(planes)
## [1] 3322 9
head(planes)
## # A tibble: 6 × 9
## tailnum year type manufacturer model engines seats speed engine
## <chr> <int> <chr> <chr> <chr> <int> <int> <int> <chr>
## 1 N10156 2004 Fixed wing multi … EMBRAER EMB-… 2 55 NA Turbo…
## 2 N102UW 1998 Fixed wing multi … AIRBUS INDU… A320… 2 182 NA Turbo…
## 3 N103US 1999 Fixed wing multi … AIRBUS INDU… A320… 2 182 NA Turbo…
## 4 N104UW 1999 Fixed wing multi … AIRBUS INDU… A320… 2 182 NA Turbo…
## 5 N10575 2002 Fixed wing multi … EMBRAER EMB-… 2 55 NA Turbo…
## 6 N105UW 1999 Fixed wing multi … AIRBUS INDU… A320… 2 182 NA Turbo…
tail(planes)
## # A tibble: 6 × 9
## tailnum year type manufacturer model engines seats speed engine
## <chr> <int> <chr> <chr> <chr> <int> <int> <int> <chr>
## 1 N996DL 1991 Fixed wing multi … MCDONNELL D… MD-88 2 142 NA Turbo…
## 2 N997AT 2002 Fixed wing multi … BOEING 717-… 2 100 NA Turbo…
## 3 N997DL 1992 Fixed wing multi … MCDONNELL D… MD-88 2 142 NA Turbo…
## 4 N998AT 2002 Fixed wing multi … BOEING 717-… 2 100 NA Turbo…
## 5 N998DL 1992 Fixed wing multi … MCDONNELL D… MD-88 2 142 NA Turbo…
## 6 N999DN 1992 Fixed wing multi … MCDONNELL D… MD-88 2 142 NA Turbo…
summary(planes)
## tailnum year type manufacturer
## Length:3322 Min. :1956 Length:3322 Length:3322
## Class :character 1st Qu.:1997 Class :character Class :character
## Mode :character Median :2001 Mode :character Mode :character
## Mean :2000
## 3rd Qu.:2005
## Max. :2013
## NA's :70
## model engines seats speed
## Length:3322 Min. :1.000 Min. : 2.0 Min. : 90.0
## Class :character 1st Qu.:2.000 1st Qu.:140.0 1st Qu.:107.5
## Mode :character Median :2.000 Median :149.0 Median :162.0
## Mean :1.995 Mean :154.3 Mean :236.8
## 3rd Qu.:2.000 3rd Qu.:182.0 3rd Qu.:432.0
## Max. :4.000 Max. :450.0 Max. :432.0
## NA's :3299
## engine
## Length:3322
## Class :character
## Mode :character
##
##
##
##
¿Cuáles son los campos y sus tipos de datos? Los campos del conjunto de datos planes y sus tipos de datos son:
# Para el data frame airports
data(airports)
str(airports)
## tibble [1,458 × 8] (S3: tbl_df/tbl/data.frame)
## $ faa : chr [1:1458] "04G" "06A" "06C" "06N" ...
## $ name : chr [1:1458] "Lansdowne Airport" "Moton Field Municipal Airport" "Schaumburg Regional" "Randall Airport" ...
## $ lat : num [1:1458] 41.1 32.5 42 41.4 31.1 ...
## $ lon : num [1:1458] -80.6 -85.7 -88.1 -74.4 -81.4 ...
## $ alt : num [1:1458] 1044 264 801 523 11 ...
## $ tz : num [1:1458] -5 -6 -6 -5 -5 -5 -5 -5 -5 -8 ...
## $ dst : chr [1:1458] "A" "A" "A" "A" ...
## $ tzone: chr [1:1458] "America/New_York" "America/Chicago" "America/Chicago" "America/New_York" ...
## - attr(*, "spec")=
## .. cols(
## .. id = col_double(),
## .. name = col_character(),
## .. city = col_character(),
## .. country = col_character(),
## .. faa = col_character(),
## .. icao = col_character(),
## .. lat = col_double(),
## .. lon = col_double(),
## .. alt = col_double(),
## .. tz = col_double(),
## .. dst = col_character(),
## .. tzone = col_character()
## .. )
ncol(airports)
## [1] 8
nrow(airports)
## [1] 1458
dim(airports)
## [1] 1458 8
head(airports)
## # A tibble: 6 × 8
## faa name lat lon alt tz dst tzone
## <chr> <chr> <dbl> <dbl> <dbl> <dbl> <chr> <chr>
## 1 04G Lansdowne Airport 41.1 -80.6 1044 -5 A America/Ne…
## 2 06A Moton Field Municipal Airport 32.5 -85.7 264 -6 A America/Ch…
## 3 06C Schaumburg Regional 42.0 -88.1 801 -6 A America/Ch…
## 4 06N Randall Airport 41.4 -74.4 523 -5 A America/Ne…
## 5 09J Jekyll Island Airport 31.1 -81.4 11 -5 A America/Ne…
## 6 0A9 Elizabethton Municipal Airport 36.4 -82.2 1593 -5 A America/Ne…
tail(airports)
## # A tibble: 6 × 8
## faa name lat lon alt tz dst tzone
## <chr> <chr> <dbl> <dbl> <dbl> <dbl> <chr> <chr>
## 1 ZTY Boston Back Bay Station 42.3 -71.1 20 -5 A America/New_Yo…
## 2 ZUN Black Rock 35.1 -109. 6454 -7 A America/Denver
## 3 ZVE New Haven Rail Station 41.3 -72.9 7 -5 A America/New_Yo…
## 4 ZWI Wilmington Amtrak Station 39.7 -75.6 0 -5 A America/New_Yo…
## 5 ZWU Washington Union Station 38.9 -77.0 76 -5 A America/New_Yo…
## 6 ZYP Penn Station 40.8 -74.0 35 -5 A America/New_Yo…
summary(airports)
## faa name lat lon
## Length:1458 Length:1458 Min. :19.72 Min. :-176.65
## Class :character Class :character 1st Qu.:34.26 1st Qu.:-119.19
## Mode :character Mode :character Median :40.09 Median : -94.66
## Mean :41.65 Mean :-103.39
## 3rd Qu.:45.07 3rd Qu.: -82.52
## Max. :72.27 Max. : 174.11
## alt tz dst tzone
## Min. : -54.00 Min. :-10.000 Length:1458 Length:1458
## 1st Qu.: 70.25 1st Qu.: -8.000 Class :character Class :character
## Median : 473.00 Median : -6.000 Mode :character Mode :character
## Mean :1001.42 Mean : -6.519
## 3rd Qu.:1062.50 3rd Qu.: -5.000
## Max. :9078.00 Max. : 8.000
¿Cuáles son los campos y sus tipos de datos? Los campos del conjunto de datos airports y sus tipos de datos son:
# Para el data frame airlines
data(airlines)
str(airlines)
## tibble [16 × 2] (S3: tbl_df/tbl/data.frame)
## $ carrier: chr [1:16] "9E" "AA" "AS" "B6" ...
## $ name : chr [1:16] "Endeavor Air Inc." "American Airlines Inc." "Alaska Airlines Inc." "JetBlue Airways" ...
ncol(airlines)
## [1] 2
nrow(airlines)
## [1] 16
dim(airlines)
## [1] 16 2
head(airlines)
## # A tibble: 6 × 2
## carrier name
## <chr> <chr>
## 1 9E Endeavor Air Inc.
## 2 AA American Airlines Inc.
## 3 AS Alaska Airlines Inc.
## 4 B6 JetBlue Airways
## 5 DL Delta Air Lines Inc.
## 6 EV ExpressJet Airlines Inc.
tail(airlines)
## # A tibble: 6 × 2
## carrier name
## <chr> <chr>
## 1 OO SkyWest Airlines Inc.
## 2 UA United Air Lines Inc.
## 3 US US Airways Inc.
## 4 VX Virgin America
## 5 WN Southwest Airlines Co.
## 6 YV Mesa Airlines Inc.
summary(airlines)
## carrier name
## Length:16 Length:16
## Class :character Class :character
## Mode :character Mode :character
¿Cuáles son los campos y sus tipos de datos?
Los campos del conjunto de datos airlines y sus tipos de datos son:
#Al consultar l DataFrame nos permite visualizar la base de datos *flights*.
view(flights)
#la media (Mean) de la distancia es de 1040 millas, lo que indica que, en promedio, los vuelos en este conjunto de datos recorren una distancia de 1040 millas.
summary(flights)
## year month day dep_time sched_dep_time
## Min. :2013 Min. : 1.000 Min. : 1.00 Min. : 1 Min. : 106
## 1st Qu.:2013 1st Qu.: 4.000 1st Qu.: 8.00 1st Qu.: 907 1st Qu.: 906
## Median :2013 Median : 7.000 Median :16.00 Median :1401 Median :1359
## Mean :2013 Mean : 6.549 Mean :15.71 Mean :1349 Mean :1344
## 3rd Qu.:2013 3rd Qu.:10.000 3rd Qu.:23.00 3rd Qu.:1744 3rd Qu.:1729
## Max. :2013 Max. :12.000 Max. :31.00 Max. :2400 Max. :2359
## NA's :8255
## dep_delay arr_time sched_arr_time arr_delay
## Min. : -43.00 Min. : 1 Min. : 1 Min. : -86.000
## 1st Qu.: -5.00 1st Qu.:1104 1st Qu.:1124 1st Qu.: -17.000
## Median : -2.00 Median :1535 Median :1556 Median : -5.000
## Mean : 12.64 Mean :1502 Mean :1536 Mean : 6.895
## 3rd Qu.: 11.00 3rd Qu.:1940 3rd Qu.:1945 3rd Qu.: 14.000
## Max. :1301.00 Max. :2400 Max. :2359 Max. :1272.000
## NA's :8255 NA's :8713 NA's :9430
## carrier flight tailnum origin
## Length:336776 Min. : 1 Length:336776 Length:336776
## Class :character 1st Qu.: 553 Class :character Class :character
## Mode :character Median :1496 Mode :character Mode :character
## Mean :1972
## 3rd Qu.:3465
## Max. :8500
##
## dest air_time distance hour
## Length:336776 Min. : 20.0 Min. : 17 Min. : 1.00
## Class :character 1st Qu.: 82.0 1st Qu.: 502 1st Qu.: 9.00
## Mode :character Median :129.0 Median : 872 Median :13.00
## Mean :150.7 Mean :1040 Mean :13.18
## 3rd Qu.:192.0 3rd Qu.:1389 3rd Qu.:17.00
## Max. :695.0 Max. :4983 Max. :23.00
## NA's :9430
## minute time_hour
## Min. : 0.00 Min. :2013-01-01 05:00:00.00
## 1st Qu.: 8.00 1st Qu.:2013-04-04 13:00:00.00
## Median :29.00 Median :2013-07-03 10:00:00.00
## Mean :26.23 Mean :2013-07-03 05:22:54.64
## 3rd Qu.:44.00 3rd Qu.:2013-10-01 07:00:00.00
## Max. :59.00 Max. :2013-12-31 23:00:00.00
##
df <- flights %>%
select(carrier, distance, origin, dest) %>%
filter(distance > mean(distance, na.rm= TRUE)) %>%
arrange(desc(distance))
# Mostrar el nuevo DataFrame filtrado
print(df)
## # A tibble: 127,665 × 4
## carrier distance origin dest
## <chr> <dbl> <chr> <chr>
## 1 HA 4983 JFK HNL
## 2 HA 4983 JFK HNL
## 3 HA 4983 JFK HNL
## 4 HA 4983 JFK HNL
## 5 HA 4983 JFK HNL
## 6 HA 4983 JFK HNL
## 7 HA 4983 JFK HNL
## 8 HA 4983 JFK HNL
## 9 HA 4983 JFK HNL
## 10 HA 4983 JFK HNL
## # ℹ 127,655 more rows
# Encuentra la suma y la media de las distancias recorridas por carrier, elimina los NA’S e interpreta que significa la suma y la media de las distancias recorridas.
dfDR <- df %>%
group_by(carrier, origin, dest) %>%
summarise(suma_distancia= sum(distance, na.rm= TRUE),
media_distancia= mean(distance, na.rm= TRUE)) %>%
# Ordena en forma descendente por distancia recorrida
arrange(desc(carrier), desc(suma_distancia))
## `summarise()` has grouped output by 'carrier', 'origin'. You can override using
## the `.groups` argument.
dfDR
## # A tibble: 150 × 5
## # Groups: carrier, origin [26]
## carrier origin dest suma_distancia media_distancia
## <chr> <chr> <chr> <dbl> <dbl>
## 1 WN EWR HOU 1377136 1411
## 2 WN LGA DEN 1158300 1620
## 3 WN EWR DEN 1105845 1605
## 4 WN EWR PHX 919323 2133
## 5 WN LGA HOU 606900 1428
## 6 WN EWR AUS 448192 1504
## 7 WN EWR MSY 347766 1167
## 8 VX JFK LAX 4447575 2475
## 9 VX JFK SFO 3656604 2586
## 10 VX EWR SFO 2008395 2565
## # ℹ 140 more rows
###6. Identificar aerolíneas líderes en los aeropuertos
#En esta parte se identifica si las aerolíneas líderes son las mismas en los tres aeropuertos cuyo origen es Nueva York ya sea el John F. Kennedy (JFK), el de LaGuardia (LGA) o el de Newark Liberty (EWR). Se genera un dataframe para cada aeropuerto.
df_JFK <- dfDR %>%
filter(origin == "JFK") %>% arrange(carrier, desc(suma_distancia))
df_JFK
## # A tibble: 69 × 5
## # Groups: carrier, origin [8]
## carrier origin dest suma_distancia media_distancia
## <chr> <chr> <chr> <dbl> <dbl>
## 1 9E JFK MSY 515352 1182
## 2 9E JFK DFW 507715 1391
## 3 9E JFK MCI 307188 1113
## 4 9E JFK SAT 84111 1587
## 5 9E JFK AUS 3042 1521
## 6 AA JFK LAX 7962075 2475
## 7 AA JFK SFO 3677292 2586
## 8 AA JFK MIA 2418669 1089
## 9 AA JFK SJU 1756202 1598
## 10 AA JFK LAS 1436472 2248
## # ℹ 59 more rows
df_LGA <- dfDR %>%
filter(origin == "LGA") %>% arrange(carrier, desc(suma_distancia))
df_LGA
## # A tibble: 31 × 5
## # Groups: carrier, origin [9]
## carrier origin dest suma_distancia media_distancia
## <chr> <chr> <chr> <dbl> <dbl>
## 1 9E LGA MCI 94095 1107
## 2 9E LGA SRQ 81666 1047
## 3 9E LGA RSW 72360 1080
## 4 9E LGA DFW 19446 1389
## 5 9E LGA MSY 1183 1183
## 6 AA LGA DFW 6717204 1389
## 7 AA LGA MIA 4323720 1096
## 8 B6 LGA FLL 2354288 1076
## 9 B6 LGA RSW 394200 1080
## 10 B6 LGA SRQ 382155 1047
## # ℹ 21 more rows
df_EWR <- dfDR %>%
filter(origin == "EWR") %>% arrange(carrier, desc(suma_distancia))
df_EWR
## # A tibble: 50 × 5
## # Groups: carrier, origin [9]
## carrier origin dest suma_distancia media_distancia
## <chr> <chr> <chr> <dbl> <dbl>
## 1 AA EWR DFW 2818088 1372
## 2 AA EWR MIA 1158780 1085
## 3 AA EWR LAX 895710 2454
## 4 AS EWR SEA 1715028 2402
## 5 B6 EWR FLL 1476090 1065
## 6 B6 EWR SJU 609432 1608
## 7 B6 EWR RSW 389820 1068
## 8 DL EWR SLC 697026 1969
## 9 EV EWR MCI 1480752 1092
## 10 EV EWR OMA 852768 1134
## # ℹ 40 more rows
Se ha solicitado hacer un estudio sobre la situación actual de la aerolínea American Airlines ya que se necesita revisar sus destinos, horarios y aviones con los que cuenta para hacer propuestas de aumento o reducción de vuelos por destino y horarios, así como la cantidad de aviones. ## Consulta y explora el data frame planes y weather para que conozcas su contenido.
view(flights)
#Se necesita saber de cada vuelo, la aerolínea, el aeropuerto de origen y el aeropuerto destino.Función: select()
#En la consulta anterior se necesita conocer el nombre de la aerolínea.Función: left_join()
#Se identifica la cantidad de vuelos por cada destino para identificar cuáles son los destinos más buscados.Función: select() y count()
#Posteriormente Agregar el nombre de la aerolínea al data frame anterior.Función: left_join()
#Se necesita conocer las aerolíneas (clave y nombre) y destinos que vuelan por la Mañana: de 6 a 12, Tarde: de 12 a 19 , Noche: de 19 a 24 y Madrugada de 24 a 6.
#Posteriormente agregar un nuevo campo a la tabla con el nombre de clas_horario y agrega, mañana, tarde, noche y madrugada según sea el caso.Función: select(), left_join(), mutate(),ifelse con in
#Se necesita saber la cantidad de vuelos por aerolínea y destino que hay por la Mañana, Tarde, Noche y Madrugada.Función: group_by() y count()
#se necesita saber a qué destinos vuela la aerolínea American Airlines Inc.-AA durante la madrugada. Función: select(),filter(),group_by()
#Se presenta la aerolínea, tipo, motor, número de asientos y la cantidad de vuelos que se han realizado con cada uno de los aviones.Se elimina los NA's Función: left_join(), select(), filter(), group_by(), count()
………….
Dentro de las aerolíneas el retraso tanto en la hora de partida como en la hora de llegada a su destino van generando indicadores negativos.
#Se solicita analizar para la aerolínea American Airlines si los vuelos que tienen retraso en la partida también tienen retraso en la hora de llegada.Realiza una visualización con una gráfica Scatterplot.
##Visualiza la tendencia de la temperatura durante los primeros 15 días del mes de Enero en los vuelos que parten del aeropuerto “Newark, EWR”, utilizar una gráfica de línea.
#Visualiza la temperatura más frecuente en los primeros 15 días del mes de Enero, utilizar un histrograma
#Utiliza Facets para observar cómo varía la temperatura en cada mes en él histograma del punto anterior
#Número de vuelos que salieron de Nueva York en 2013 por aerolínea (mostrar solamente las 10 aerolíneas con más vuelos), utilizar gráfica de barras.
#Visualiza el punto anterior en una gráfica de pie.
#Relaciona el data frame flights con el data frame airports a través del campo destino ¿cómo lograr estas relación?
#Crea un nuevo data frame con el punto anterior únicamente con los 5 carriers con más vuelos por destino.
#Realiza una visualización del punto anterior de las siguientes tres formas.
#elabora un reporte ejecutivo utilizando los resultados obtenidos.
Describe el valor de la integridad.
¿ cómo puedes actuar con respeto y honestidad en los negocios y en el uso de datos cuando realices análisis de datos y estés en contacto con los datos de una empresa?
Alma: xxx: xxx:
Agrega al menos 3 bibliografías y cítalas en el punto anterior. http://codigoeticaeintegridad.com/
bdgrande <-merge(flights,airlines, by="carrier")
bdgrande2 <-merge(bdgrande,planes, by="tailnum")
bdgrande3 <- left_join(bdgrande2,weather,by=c("origin","time_hour"))
df1 <- bdgrande2 %>% select(dep_delay, seats)
df2 <- df1 %>% filter(seats >= 2 & seats <= 100)
df3 <- df1 %>% filter(seats >100)
summarize(df2, mean(dep_delay, na.rm=TRUE))
## mean(dep_delay, na.rm = TRUE)
## 1 16.90538
summarize(df3, mean(dep_delay, na.rm=TRUE))
## mean(dep_delay, na.rm = TRUE)
## 1 11.14191
summary(df1)
## dep_delay seats
## Min. : -43.00 Min. : 2.0
## 1st Qu.: -5.00 1st Qu.: 55.0
## Median : -1.00 Median :149.0
## Mean : 13.18 Mean :136.7
## 3rd Qu.: 11.00 3rd Qu.:189.0
## Max. :1301.00 Max. :450.0
## NA's :4199
summary(df2)
## dep_delay seats
## Min. :-32.00 Min. : 2.00
## 1st Qu.: -6.00 1st Qu.: 20.00
## Median : -2.00 Median : 55.00
## Mean : 16.91 Mean : 53.71
## 3rd Qu.: 19.00 3rd Qu.: 55.00
## Max. :798.00 Max. :100.00
## NA's :3237
summary(df3)
## dep_delay seats
## Min. : -43.00 Min. :102.0
## 1st Qu.: -4.00 1st Qu.:149.0
## Median : -1.00 Median :179.0
## Mean : 11.14 Mean :183.4
## 3rd Qu.: 9.00 3rd Qu.:200.0
## Max. :1301.00 Max. :450.0
## NA's :962
ggplot(df1, aes(x = factor(seats), y = dep_delay)) +
geom_point(alpha = 0.5, position = position_jitter(width = 0.2)) + # Añade un poco de 'jitter' para evitar la superposición de puntos
labs(title = "Retrasos por Asientos",
x = "Número de Asientos",
y = "Retraso (minutos)") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5), # Centrar el título
axis.title.x = element_text(face = "bold"), # Negrita para la etiqueta del eje X
axis.title.y = element_text(face = "bold"), # Negrita para la etiqueta del eje Y
axis.text.x = element_text(angle = 45, hjust = 1)) # Rotar etiquetas para mejor
## Warning: Removed 4199 rows containing missing values or values outside the scale range
## (`geom_point()`).
ggplot(df2, aes(x = factor(seats), y = dep_delay)) +
geom_point(alpha = 0.5, position = position_jitter(width = 0.2)) + # Añade un poco de 'jitter' para evitar la superposición de puntos
labs(title = "Retrasos por Número de Asientos en Aviones Pequeños",
x = "Número de Asientos",
y = "Retraso al Despegue (minutos)") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5), # Centrar el título
axis.title.x = element_text(face = "bold"), # Negrita para la etiqueta del eje X
axis.title.y = element_text(face = "bold"), # Negrita para la etiqueta del eje Y
axis.text.x = element_text(angle = 45, hjust = 1)) # Rotar etiquetas para mejor lectura
## Warning: Removed 3237 rows containing missing values or values outside the scale range
## (`geom_point()`).
ggplot(df3, aes(x = factor(seats), y = dep_delay)) +
geom_point(alpha = 0.5 , position = position_jitter(width = 0.2)) +
labs(title = "Retrasos por Número de Asientos en Aviones Grandes",
x = "Número de Asientos",
y = "Retraso al Despegue (minutos)") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5), # Centrar el título
axis.title.x = element_text(face = "bold"), # Negrita para la etiqueta del eje X
axis.title.y = element_text(face = "bold"), # Negrita para la etiqueta del eje Y
axis.text.x = element_text(angle = 45, hjust = 1)) # Rotar etiquetas para mejor lectura
## Warning: Removed 962 rows containing missing values or values outside the scale range
## (`geom_point()`).
Interpretación:
summary(bdgrande3)
## tailnum carrier year.x month.x
## Length:284170 Length:284170 Min. :2013 Min. : 1.000
## Class :character Class :character 1st Qu.:2013 1st Qu.: 4.000
## Mode :character Mode :character Median :2013 Median : 7.000
## Mean :2013 Mean : 6.569
## 3rd Qu.:2013 3rd Qu.:10.000
## Max. :2013 Max. :12.000
##
## day.x dep_time sched_dep_time dep_delay arr_time
## Min. : 1.00 Min. : 1 Min. : 500 Min. : -43.00 Min. : 1
## 1st Qu.: 8.00 1st Qu.: 905 1st Qu.: 905 1st Qu.: -5.00 1st Qu.:1059
## Median :16.00 Median :1358 Median :1358 Median : -1.00 Median :1529
## Mean :15.71 Mean :1350 Mean :1344 Mean : 13.18 Mean :1495
## 3rd Qu.:23.00 3rd Qu.:1752 3rd Qu.:1730 3rd Qu.: 11.00 3rd Qu.:1942
## Max. :31.00 Max. :2400 Max. :2359 Max. :1301.00 Max. :2400
## NA's :4199 NA's :4199 NA's :4551
## sched_arr_time arr_delay flight origin
## Min. : 1 Min. : -86.00 Min. : 1 Length:284170
## 1st Qu.:1119 1st Qu.: -17.00 1st Qu.: 511 Class :character
## Median :1553 Median : -5.00 Median :1381 Mode :character
## Mean :1531 Mean : 7.05 Mean :1883
## 3rd Qu.:1946 3rd Qu.: 14.00 3rd Qu.:3318
## Max. :2359 Max. :1272.00 Max. :8500
## NA's :5153
## dest air_time distance hour.x
## Length:284170 Min. : 20.0 Min. : 80 Min. : 5.00
## Class :character 1st Qu.: 83.0 1st Qu.: 529 1st Qu.: 9.00
## Mode :character Median :131.0 Median : 937 Median :13.00
## Mean :153.8 Mean :1069 Mean :13.18
## 3rd Qu.:197.0 3rd Qu.:1416 3rd Qu.:17.00
## Max. :695.0 Max. :4983 Max. :23.00
## NA's :5153
## minute time_hour name
## Min. : 0.00 Min. :2013-01-01 05:00:00.00 Length:284170
## 1st Qu.: 7.00 1st Qu.:2013-04-05 11:00:00.00 Class :character
## Median :29.00 Median :2013-07-04 09:00:00.00 Mode :character
## Mean :26.07 Mean :2013-07-03 20:30:56.16
## 3rd Qu.:43.00 3rd Qu.:2013-10-01 17:00:00.00
## Max. :59.00 Max. :2013-12-31 23:00:00.00
##
## year.y type manufacturer model
## Min. :1956 Length:284170 Length:284170 Length:284170
## 1st Qu.:1999 Class :character Class :character Class :character
## Median :2002 Mode :character Mode :character Mode :character
## Mean :2001
## 3rd Qu.:2006
## Max. :2013
## NA's :5306
## engines seats speed engine
## Min. :1.000 Min. : 2.0 Min. : 90.0 Length:284170
## 1st Qu.:2.000 1st Qu.: 55.0 1st Qu.:105.0 Class :character
## Median :2.000 Median :149.0 Median :126.0 Mode :character
## Mean :1.994 Mean :136.7 Mean :150.8
## 3rd Qu.:2.000 3rd Qu.:189.0 3rd Qu.:127.0
## Max. :4.000 Max. :450.0 Max. :432.0
## NA's :283207
## year month.y day.y hour.y
## Min. :2013 Min. : 1.000 Min. : 1.00 Min. : 5.00
## 1st Qu.:2013 1st Qu.: 4.000 1st Qu.: 8.00 1st Qu.: 9.00
## Median :2013 Median : 7.000 Median :16.00 Median :13.00
## Mean :2013 Mean : 6.551 Mean :15.67 Mean :13.18
## 3rd Qu.:2013 3rd Qu.: 9.000 3rd Qu.:23.00 3rd Qu.:17.00
## Max. :2013 Max. :12.000 Max. :31.00 Max. :23.00
## NA's :1340 NA's :1340 NA's :1340 NA's :1340
## temp dewp humid wind_dir
## Min. : 10.94 Min. :-9.94 Min. : 12.74 Min. : 0.0
## 1st Qu.: 42.08 1st Qu.:26.06 1st Qu.: 44.00 1st Qu.:130.0
## Median : 57.20 Median :42.98 Median : 57.87 Median :220.0
## Mean : 57.04 Mean :41.71 Mean : 59.66 Mean :201.5
## 3rd Qu.: 71.96 3rd Qu.:57.92 3rd Qu.: 75.50 3rd Qu.:290.0
## Max. :100.04 Max. :78.08 Max. :100.00 Max. :360.0
## NA's :1356 NA's :1356 NA's :1356 NA's :8481
## wind_speed wind_gust precip pressure
## Min. : 0.000 Min. :16.11 Min. :0.0000 Min. : 983.8
## 1st Qu.: 6.905 1st Qu.:20.71 1st Qu.:0.0000 1st Qu.:1012.8
## Median :10.357 Median :24.17 Median :0.0000 Median :1017.6
## Mean :11.019 Mean :25.14 Mean :0.0045 Mean :1017.9
## 3rd Qu.:13.809 3rd Qu.:27.62 3rd Qu.:0.0000 3rd Qu.:1022.8
## Max. :42.579 Max. :66.75 Max. :1.2100 Max. :1042.1
## NA's :1413 NA's :216885 NA's :1340 NA's :32389
## visib
## Min. : 0.000
## 1st Qu.:10.000
## Median :10.000
## Mean : 9.262
## 3rd Qu.:10.000
## Max. :10.000
## NA's :1340
# Ajustamos el modelo de regresión lineal
modelo <- lm(dep_delay ~ temp + dewp + humid + wind_speed + precip + pressure + visib, data = bdgrande3)
# Obtenemos un resumen del modelo para ver los resultados
summary(modelo)
##
## Call:
## lm(formula = dep_delay ~ temp + dewp + humid + wind_speed + precip +
## pressure + visib, data = bdgrande3)
##
## Residuals:
## Min 1Q Median 3Q Max
## -68.86 -17.10 -11.37 -0.49 1294.21
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 411.30928 11.87766 34.629 < 2e-16 ***
## temp 0.42279 0.04571 9.250 < 2e-16 ***
## dewp -0.33839 0.04924 -6.873 6.32e-12 ***
## humid 0.29136 0.02513 11.595 < 2e-16 ***
## wind_speed 0.29202 0.01517 19.248 < 2e-16 ***
## precip 74.63811 6.32365 11.803 < 2e-16 ***
## pressure -0.41823 0.01118 -37.399 < 2e-16 ***
## visib -0.42820 0.06695 -6.395 1.60e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 37.49 on 248789 degrees of freedom
## (35373 observations deleted due to missingness)
## Multiple R-squared: 0.02236, Adjusted R-squared: 0.02233
## F-statistic: 812.9 on 7 and 248789 DF, p-value: < 2.2e-16
# Para una visualización más limpia de los coeficientes, utilizamos broom
coeficientes <- tidy(modelo)
# Mostramos los coeficientes, excluyendo el intercepto si es necesario
coeficientes %>% filter(term != "(Intercept)")
## # A tibble: 7 × 5
## term estimate std.error statistic p.value
## <chr> <dbl> <dbl> <dbl> <dbl>
## 1 temp 0.423 0.0457 9.25 2.27e- 20
## 2 dewp -0.338 0.0492 -6.87 6.32e- 12
## 3 humid 0.291 0.0251 11.6 4.44e- 31
## 4 wind_speed 0.292 0.0152 19.2 1.67e- 82
## 5 precip 74.6 6.32 11.8 3.84e- 32
## 6 pressure -0.418 0.0112 -37.4 2.86e-305
## 7 visib -0.428 0.0670 -6.40 1.60e- 10
# Filtrar o excluir el intercepto si no es relevante para la visualización
coeficientes <- coeficientes %>% filter(term != "(Intercept)")
# Crear la gráfica
ggplot(coeficientes, aes(x = term, y = estimate)) +
geom_col(fill = "steelblue") +
geom_errorbar(aes(ymin = estimate - std.error, ymax = estimate + std.error), width = 0.2) +
labs(title = "Impacto de Variables Climáticas en Retrasos de Vuelos",
x = "Variables Climáticas",
y = "Coeficiente Estimado") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
La gráfica muestra los coeficientes estimados para cada variable climática a partir de un modelo de regresión lineal, el cual predice el retraso de los vuelos (dep_delay). Los coeficientes indican cómo cambia el retraso esperado de un vuelo (en minutos) con cada unidad de cambio en la variable climática. Los resultados significativos (p-valor < 0.05) son especialmente dignos de mención.
** temp (Temperatura): Tiene un coeficiente positivo pequeño (0.423), lo que sugiere que a medida que la temperatura aumenta, los retrasos en los vuelos tienden a aumentar ligeramente, pero el efecto es relativamente pequeño.
** dewp (Punto de Rocío): Presenta un coeficiente negativo (-0.338), implicando que un aumento en el punto de rocío podría asociarse levemente con una disminución en los retrasos de los vuelos.
** humid (Humedad): Con un coeficiente positivo de 0.291, sugiere que la humedad más alta podría estar ligeramente asociada con mayores retrasos.
** wind_speed (Velocidad del Viento): También tiene un efecto positivo (0.292) en los retrasos de los vuelos, lo que podría indicar que a mayor velocidad del viento, es más probable que los vuelos experimenten retrasos.
** precip (Precipitación): Muestra un gran coeficiente positivo (74.6), sugiriendo que la precipitación es un factor significativo y tiene un fuerte impacto en el aumento de los retrasos de los vuelos.
** pressure (Presión Atmosférica): Tiene un coeficiente negativo significativo (-0.418), lo que indica que un aumento en la presión atmosférica está asociado con una disminución en los retrasos de los vuelos.
** visib (Visibilidad): Con un coeficiente negativo (-0.428), sugiere que la visibilidad reducida está asociada con aumentos en los retrasos de los vuelos.
La precipitación parece tener el impacto más significativo en los retrasos de los vuelos, con un gran coeficiente positivo, lo que sugiere que los días lluviosos o con mal tiempo pueden causar retrasos sustanciales. La presión y la visibilidad también son factores significativos, pero su impacto es inverso, donde la mayor visibilidad y presión atmosférica están relacionadas con menores retrasos.
# Calculamos el retraso promedio por aeropuerto de origen y el porcentaje de vuelos retrasados
retraso_por_aeropuerto <- bdgrande3 %>%
group_by(origin) %>%
summarise(
retraso_promedio = mean(dep_delay, na.rm = TRUE), # Calculamos el retraso promedio excluyendo NA
vuelos = n(), # Contamos el número total de vuelos para cada aeropuerto
vuelos_retrasados = sum(dep_delay > 0, na.rm = TRUE), # Contamos los vuelos retrasados
porcentaje_retrasados = vuelos_retrasados / vuelos * 100 # Calculamos el porcentaje de vuelos retrasados
) %>%
arrange(desc(retraso_promedio)) # Ordenamos por el retraso promedio descendente
# Mostramos los resultados
print(retraso_por_aeropuerto)
## # A tibble: 3 × 5
## origin retraso_promedio vuelos vuelos_retrasados porcentaje_retrasados
## <chr> <dbl> <int> <int> <dbl>
## 1 EWR 15.2 114927 50942 44.3
## 2 JFK 12.2 94142 36278 38.5
## 3 LGA 11.3 75101 25576 34.1
# Crear una gráfica que muestra tanto el retraso promedio como el porcentaje de vuelos retrasados
ggplot(retraso_por_aeropuerto, aes(x = origin)) +
geom_col(aes(y = retraso_promedio), fill = "steelblue", width = 0.4, position = position_dodge(width = 0.5)) +
geom_col(aes(y = porcentaje_retrasados), fill = "firebrick", width = 0.4, position = position_dodge(width = 0.5), alpha = 0.5) +
scale_y_continuous(sec.axis = sec_axis(~., name = "Porcentaje de Vuelos Retrasados")) +
labs(title = "Retraso Promedio y Porcentaje de Vuelos Retrasados por Aeropuerto de Origen",
x = "Aeropuerto de Origen",
y = "Retraso Promedio (minutos)") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1))
# Mostrar la gráfica
ggsave("retraso_y_porcentaje_por_aeropuerto.png", width = 10, height = 6) # Opcional: Guardar la gráfica
names(bdgrande3)
## [1] "tailnum" "carrier" "year.x" "month.x"
## [5] "day.x" "dep_time" "sched_dep_time" "dep_delay"
## [9] "arr_time" "sched_arr_time" "arr_delay" "flight"
## [13] "origin" "dest" "air_time" "distance"
## [17] "hour.x" "minute" "time_hour" "name"
## [21] "year.y" "type" "manufacturer" "model"
## [25] "engines" "seats" "speed" "engine"
## [29] "year" "month.y" "day.y" "hour.y"
## [33] "temp" "dewp" "humid" "wind_dir"
## [37] "wind_speed" "wind_gust" "precip" "pressure"
## [41] "visib"
# Calculamos el retraso promedio por mes y aeropuerto de origen
retraso_promedio_mes_aeropuerto <- bdgrande3 %>%
group_by(origin, month.x) %>%
summarise(retraso_promedio = mean(dep_delay, na.rm = TRUE)) %>%
arrange(origin, month.x)
## `summarise()` has grouped output by 'origin'. You can override using the
## `.groups` argument.
# Resultado
print(retraso_promedio_mes_aeropuerto)
## # A tibble: 36 × 3
## # Groups: origin [3]
## origin month.x retraso_promedio
## <chr> <int> <dbl>
## 1 EWR 1 15.1
## 2 EWR 2 13.3
## 3 EWR 3 18.5
## 4 EWR 4 17.2
## 5 EWR 5 15.4
## 6 EWR 6 22.6
## 7 EWR 7 22.3
## 8 EWR 8 13.5
## 9 EWR 9 7.24
## 10 EWR 10 8.74
## # ℹ 26 more rows
# Creamos una gráfica para visualizar los retrasos promedio por mes y aeropuerto de origen
ggplot(retraso_promedio_mes_aeropuerto, aes(x = month.x, y = retraso_promedio, color = origin)) +
geom_line() + # Líneas para conectar los puntos de retraso promedio
geom_point() + # Puntos para destacar cada valor de retraso promedio
scale_x_continuous(breaks = 1:12, labels = c("Ene", "Feb", "Mar", "Abr", "May", "Jun", "Jul", "Ago", "Sep", "Oct", "Nov", "Dic")) +
labs(title = "Retrasos Promedio por Mes y Aeropuerto de Origen",
x = "Mes",
y = "Retraso Promedio (minutos)") +
theme_minimal() +
theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
scale_color_manual(values = c("steelblue", "firebrick", "forestgreen")) # Colores personalizados para cada aeropuerto
# Mostrar la gráfica
ggsave("retraso_promedio_mes_aeropuerto.png", width = 10, height = 6)
bdgrande3 <- bdgrande3 %>%
filter(!is.na(year.y)) %>%
mutate(age = 2013 - year.y) %>% # Asumiendo que los datos de vuelo son de 2013
filter(age >= 0) # Asegurar que la antigüedad sea lógica
age_delay_summary_bdgrande3 <- bdgrande3 %>%
group_by(age) %>%
summarise(
avg_dep_delay = mean(dep_delay, na.rm = TRUE),
n = n()
) %>%
filter(n > 100) # Filtrar grupos con suficientes datos
ggplot(age_delay_summary_bdgrande3, aes(x = age, y = avg_dep_delay)) +
geom_line(color = "blue", na.rm = TRUE) +
geom_point(color = "blue", na.rm = TRUE) + # Añadir puntos para mayor claridad
labs(title = "Retraso Promedio de Salida por Antigüedad del Avión",
x = "Antigüedad del Avión (años)",
y = "Retraso Promedio de Salida (minutos)") +
theme_minimal()
bdgrande3 <- bdgrande3 %>%
mutate(
hour_of_day = sched_dep_time %/% 100, # Extrae la hora del tiempo de salida programado
dep_delay = ifelse(is.na(dep_delay), 0, dep_delay) # Trata los NA en dep_delay como 0 para este análisis
)
retraso_promedio_por_hora <- bdgrande3 %>%
group_by(hour_of_day) %>%
summarise(retraso_promedio = mean(dep_delay, na.rm = TRUE)) %>%
arrange(hour_of_day)
ggplot(retraso_promedio_por_hora, aes(x = hour_of_day, y = retraso_promedio)) +
geom_line() + # Línea para conectar los puntos de retraso promedio
geom_point() + # Puntos para resaltar cada hora
labs(title = "Promedio de Retraso de Vuelo por Hora del Día",
x = "Hora del Día",
y = "Retraso Promedio (minutos)") +
theme_minimal() +
theme(plot.title = element_text(hjust = 0.5))