El paquete nycflights13 contiene información sobre todos los vuelos que partieron desde Nueva York (EWR, JFK, y LGA) a destinos en los Estados Unidos en 2013. Fueron 336,776 vuelos en total. Para ayudar a comprender las causas de los retrasos, también incluye otros conjuntos de datos útiles.
Este paquete incluye las siguientes tablas:
#Para instalar librerĆas: install.packages("nycflights")
library(nycflights13)
library(stats)
library(tidyverse)
## āā Attaching core tidyverse packages āāāāāāāāāāāāāāāāāāāāāāāā tidyverse 2.0.0 āā
## ā dplyr 1.1.4 ā readr 2.1.5
## ā forcats 1.0.0 ā stringr 1.5.1
## ā ggplot2 3.5.0 ā tibble 3.2.1
## ā lubridate 1.9.3 ā tidyr 1.3.1
## ā 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
flights <- flights
weather <- weather
planes <- planes
airports <- airports
airlines <- airlines
Fuente: Origen de los datos
# La caarga 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
# num: numerico (decimales)
# chr: caracter (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 son
# 1. numeric: NĆŗmero real o decimales
# 2. integer: nĆŗmeros enteros
# 3. complex: nĆŗmeros complejos
# 4. character: caracteres
# 5. logical: TRUE o FALSE
# Las 4 clases de objetos compuestos son:
# 1. list: lista (una columna)
# 2. matix: matriz (varias columnas, todos el mismo tipo de datos [numeros, letras, etc])
# 3. array: colección de objetos
# 4. data.frame: base de datos
# NĆŗmero de columnas
ncol(flights)
## [1] 19
# NĆŗmero 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>
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 utilizar las funciones mÔs comunes del anÔlisis exploratorio, el cual es el primer paso para cualquier trabajo de manipulación de datos.
Se nos ha solicitado consultar cuĆ”les son las aerolĆneas de mayor
trƔfico aƩreo en origen y destino.
Contamos con un data frame llamado flights que contiene toda la
información de los vuelos de todos los aeropuertos de New York.
aerolineas <- table(flights$carrier)
enorden <- sort(aerolineas)
enorden
##
## OO HA YV F9 AS FL VX WN 9E US MQ AA DL
## 32 342 601 685 714 3260 5162 12275 18460 20536 26397 32729 48110
## EV B6 UA
## 54173 54635 58665
Define un criterio para encontrar las aerolĆneas que han recorrido mĆ”s distancia (en millas) y crea un nuevo data frame que filtre solamente a las aeorlĆneas que han recorrido una distancia superior a la media, se desean ver los campos carrier, distance, origin, dest en forma descendente por distance.
promedio <- mean(flights$distance)
promedio
## [1] 1039.913
df <- flights
df <- flights %>% filter(distance >= promedio)
dfaerolineas <- table(df$carrier)
#dforden tiene a df en orden descendiente
dforden <- sort(dfaerolineas)
dforden
##
## HA F9 AS MQ 9E US WN EV VX DL AA B6 UA
## 342 685 714 744 1377 2271 3832 3991 5162 21637 23190 24426 39294
view(dforden)
Ahora, usando solamente las top 5 aerolineas con mƔs vuelos arriba de la media, encontraremos de quƩ aeropuertos salieron los vuelos largos y con quƩ aerolineas
resumen_aerolineas <- df %>% filter(origin == "JFK") %>% group_by(carrier) %>% summarise(distancia_promedio = mean(distance, na.rm = TRUE)) %>% arrange(desc(distancia_promedio))
Con estos datos, podemos ver que Hawaiian Airlines tiene los vuelos con mĆ”s distancia promedio fuera de todas las aerolĆneas. Esto siendo debido probablemente a que HA viaja mucho ida y vuelta a las islas de Hawaii, las cuales estĆ”n muy lejos. La distancia promedio de un vuelo de HA fue de 4983 millas.
Identifica si las aerolĆneas lĆderes son las mismas en los tres aeropuertos cuyo origen es Nueva York ( John F. Kennedy (JFK), LaGuardia (LGA) and Newark Liberty (EWR) ). Genera un data frame para cada aeropuerto. Funciones: filter, select y rename
jfk <- flights %>% filter(origin=="JFK") %>% group_by(carrier) %>% summarize(num_vuelos = n())
lga <- flights %>% filter(origin=="LGA") %>% group_by(carrier) %>% summarize(num_vuelos = n())
ewr <- flights %>% filter(origin=="EWR") %>% group_by(carrier) %>% summarize(num_vuelos = n())
Se nos 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. Para el desarrollo de la situación problema considera las funciones sugeridas en cada paso. Consulta y explora el data frame planes y weather para que conozcas su contenido.
vuelostodos <- merge(flights, planes, by="tailnum")
vuelosAA <- vuelostodos %>% filter(carrier =="AA")
AA <- vuelosAA %>% select(carrier)
vuelosAAfiltrados<- vuelosAA%>% select(origin:dest)
vuelostodos <- left_join(flights, airlines, by="carrier")
Con esas tres funciones, logramos: 1. Hacer una base de datos de nada
mƔs la fila de AA.
2. Merge todos los vuelos de la base de datos flights
con la base de datos planes
3. Filtrar esa base de datos nueva para encontrar solamente los vuelos
de AA.
4. De esos vuelos, seleccionar solamente las columnas de origen y
destino.
countoriginfeoAA <- count(vuelosAAfiltrados,origin, name="Cantidad de vuelos")
count_originAA <- arrange(countoriginfeoAA, desc("Cantidad de vuelos"))
countoriginfeos <- count(vuelostodos,origin, name="Cantidad de vuelos")
count_origin_TODOS <- arrange(countoriginfeos, desc("Cantidad de vuelos"))
Con una función de count(), encontramos que los vuelos de AA consisten de 1145 vuelos saliendo de EWR, 5500 saliendo de JFK, y 3526 saliendo de LGA.
countdestfeoAA<- count(vuelosAAfiltrados,origin,dest, name ="Cantidad de vuelos")
count_destAA <- arrange(countdestfeoAA,desc("Cantidad de vuelos"))
countdestfeos <- count(vuelostodos,origin,dest, name ="Cantidad de vuelos")
count_dest_TODOS <- arrange(countdestfeos,desc("Cantidad de vuelos"))
Al correr la funcion count() de arriba, encontramos los destinos de los vuelos AA. El favorito destino de AA es Los Angeles (LAX, 3178), luego Chicago OāHare (ORD, 2500), luego Dallas Fort Worth (DFW, 1613), etcā¦
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.
maƱana <- vuelostodos %>% filter(hour >= 6 & hour <= 12)
tarde <- vuelostodos %>% filter(hour > 12 & hour <= 19)
noche <- vuelostodos %>% filter(hour >= 19 & hour <= 24)
madrugada <- vuelostodos %>% filter(hour > 0 & hour < 6)
vuelosmaƱana <- maƱana %>% select(year:day,hour,minute,carrier,name,dest)
vuelostarde <- tarde %>% select(year:day,hour,minute,carrier,name,dest)
vuelosnoche <- noche %>% select(year:day,hour,minute,carrier,name,dest)
vuelosmadrugada <- madrugada %>% select(year:day,hour,minute,carrier,name,dest)
AquĆ se construyeron bases de datos nuevas seleccionando solamente aquellos datos necesarios de la base de datos āvuelostodosā que se usa mĆŗltiples veces en mi trabajo.
Agrega un nuevo campo a la tabla con el nombre de clas_horario y agrega āmaƱanaā, ātardeā, ānocheā, āmadrugadaā segĆŗn lo que corresponde.
vuelostodos <- vuelostodos %>% mutate(clas_horario = ifelse(hour >= 6 & hour <12, "maƱana", ifelse(hour >= 12 & hour <19, "tarde", ifelse(hour >= 19 & hour <23, "noche",ifelse(hour >= 0 & hour <6, "madrugada",NA)))))
La base de datos āvuelostodosā contiene la columna de la clase de horario en el que volaron los aviones. Use esta base de datos mĆ”s adelante para encontrar cuantos vuelos volaba cada aerolĆnea por destino. Aun que no sĆ© si es la manera mĆ”s eficiente, use ifelse uno āadentroā del otro para ir deduciendo en donde deben de actuar. Con este mĆ©todo, logramos aƱadir la columna de clas_horario.
Se necesita saber la cantidad de vuelos por aerolĆnea y destino que hay por la MaƱana, Tarde, Noche y Madrugada
clasificacionvuelos <- vuelostodos %>% count(name, dest, clas_horario, name ="Cantidad de vuelos")
clasificacionvuelos <- clasificacionvuelos %>% arrange(desc("Cantidad de vuelos"))
la base de datos āclasificacionvuelosā contiene todos los vuelos que salieron de algĆŗn aeropuerto de Nueva York. EstĆ”n organizados alfabĆ©ticamente por las aerolĆneas.
Se necesita saber a quĆ© destinos vuela la aerolĆnea American Airlines Inc.Ā (AA) durante la madrugada
AAmaƱana <- clasificacionvuelos %>% filter(name =="American Airlines Inc.", clas_horario == "madrugada")
El único destino que voló American Airlines desde alguno de los aeropuertos de NYC fue a Miami (Seguro mucha fiesta)
ĀæQuĆ© aviones utiliza la aerolĆnea AA? aerolĆnea, tipo, motor y nĆŗmero de asientos y ĀæCuĆ”ntos vuelos se han realizado con cada uno? elimina los NAās
aviones_AA <- left_join(vuelosAA, planes, by="tailnum")
vuelosxavion <- aviones_AA %>% filter(!is.na(type.x)) %>% count(type.x, name="Cantidad de vuelos")
Con una base de datos tan extensa como lo es ānycflights13ā, podemos extraer mucha información no solo de las aerolĆneas y sus aviones, sino los vuelos que hacen, la distancia, el tiempo, el tipo de avión que utilizan, etc. Con este ejercicio, logramos definir algunos hallazgos que parecen importantes para expandir nuestro conocimiento de los vuelos y aeropuertos de Nueva York, ya sea La Guardia (LGA), John F. Kennedy (JFK), o Newark Liberty (EWR).
Los vuelos que volaron mĆ”s seguido fueron: JFK a LAX (11262 veces al aƱo, 31 veces al dĆa), LGA a ATL (10263 veces al aƱo, 29 veces al dĆa), y LGA a ORD (8857 veces al aƱo, 24.6 veces al dĆa)
Las aerolĆneas con mayor distancia promedio fueron Hawaiian Airlines (4983 millas), United Airlines (2535 millas), y Virgin America (2495 millas)
Curiosamente, no aparecen vuelos que despeguen entre 1a.m y 5a.m, ya que los primeros datos del dĆa, por asĆ decirlo, empiezan alas 5a.m
AA utilizó 3 diferentes tipos de aviones para llevar a cabos sus traslados. Estos siendo āFixed wing multi engineā (9318 vuelos) āFixed wing single engineā (729) y āRotorcraftā (124) El primero, el āFixed wing multi engineā es el avión tĆpico que te imaginas. Ya sea un Airbus, Boeing, etc. El single engine son mucho mĆ”s pequeƱos, pues aguanta mucho menos carga. Finalmente, los Rotorcraft, son aquellos que parecen helicópteros (mirar imagen)
Aunque por sà mismos estos datos no parezcan muy importantes, se pueden utilizar para identificar problemas que pueden causar una pérdida de dinero en algún futuro. Este trabajo me ayudó a implementar todos los aprendizajes que me llevé de mi clase de Manipulación de Datos, y ahora puedo implimentar estos aprendizajes en proyectos personales y/o profesionales.