Contexto
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:
- flights = todos los vuelos que salieron de Nueva York en 2013
- weather = datos meteorológicos por hora de cada aeropuerto
- planes = información de construcción de cada avión
- airports = nombres y ubicaciones de aeropuertos
- airlines = relación entre nombres y códigos de las aerolíneas
Fuente:
Origen
de los datos
Funciones Básicas de Manejo de
Datos
Select
La función select sirve para seleccionar columnas de una
tabla (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:-distance) # 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 a una columna
Filter
La función filter sirve para seleccionar renglones de una
tabla (data frame). La función slice sirve para
seleccionar filas en especifico (data frame).
df7 <- flights %>% filter(dep_delay >=500) # Extrae renglones que cumplan condición
# Igual == , Desigual =!= , Mayor que > , Mayor o igual que >= , Menor que < , Menor o igual que <=
# Operadores lógicos: AND &, OR | , NOT !
df8 <- flights %>% filter(dep_delay >=500,dep_delay<600) # Extrae renglones que cumplan dos condiciones
df9 <- flights %>% slice(1000:1099) # Extrae los números de los renglones indicados, sin importar sus valores
Distinct
La función distinct sirve para eliminar renglones
duplicados.
df10 <- distinct(flights) # Dejar sólo los renglones diferentes, borra todos los repetidos
Merge
La función merge sirve para juntar bases de datos.
bdgrande <- merge(flights,airlines, by="carrier")
bdgrande2 <- merge(bdgrande,planes, by="tailnum")
Mutate
bdgrande3 <- mutate(bdgrande2,dist_mts = distance*1.609) # Agrega variables nuevas calculadas a partir de variables existentes en la base de datos
Ejercicios
- Encuentra todos los vuelos que tuvieron un atraso en llegada de 2
horas o más
ejercicio1 <- bdgrande2 %>% filter(arr_delay>=120)
- Encuentra todos los vuelos que llegaron a Houston (IAH o HOU)
ejercicio2 <- bdgrande2 %>% filter(dest == "IAH" | dest == "HOU")
3.Encuentra todos los vuelos operados por United, American o
Delta
ejercicio3 <- bdgrande2 %>% filter(carrier %in% c("UA" , "AA" , "DL"))
Ejercicio 4. Encuentra todos los vuelos que despegaron en Julio,
Agosto o Septiembre.
ejercicio4a <- bdgrande2 %>% filter(month == 7 | month == 8 | month == 9)
ejercicio4b <- bdgrande2 %>% filter(month %in% c(7:9))
Ejercicio 5. Encuentra todos los vuelos que arrivaron más de 2 horas
tarde, pero no despegaron tarde.
ejercicio5 <- bdgrande2 %>% filter(arr_delay>120 & dep_delay<=0)
Ejercicio 6. Encuentra todos los vuelos que se retrasaron al menos 1
hora, pero que llegaron antes 30 minutos o más.
ejercicio6 <- bdgrande2 %>% filter(dep_delay>=60 & arr_delay<=-30)
Ejercicio 7. Encuentra todos los vuelos que salieron entre la
medianoche y las 6 a.m.
ejercicio7 <- bdgrande2 %>% filter(dep_time == 2400 | dep_time <= 600)
Arrange
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)
Summarize
Colapsa una tabla a un sólo renglón
# Obtén el retraso promedio de despegue de todos los vuelos
summarize(bdgrande2,mean(dep_delay, na.rm=TRUE))
## mean(dep_delay, na.rm = TRUE)
## 1 13.17979
Group by
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
LS0tDQp0aXRsZTogIkRhdGEgV3JhbmdsaW5nIChQYXJ0ZSAxKSINCmF1dGhvcjogIkFkcmnDoW4gR2FyemEgLSBBMDEyODU0MTIiDQpkYXRlOiAiMjAyNC0wMi0xOSINCm91dHB1dDogDQogIGh0bWxfZG9jdW1lbnQ6DQogICAgdG9jOiBUUlVFDQogICAgdG9jX2Zsb2F0OiBUUlVFDQogICAgY29kZV9kb3dubG9hZDogVFJVRQ0KICAgIHRoZW1lOiB5ZXRpDQotLS0NCg0KIVtdKEM6XFxVc2Vyc1xcQm9vdENhbXBcXERvd25sb2Fkc1xcYXZpb24gMi5qZmlmKQ0KDQojIDxzcGFuIHN0eWxlPSJjb2xvcjogQmx1ZTsiPkNvbnRleHRvPC9zcGFuPiANCkVsIHBhcXVldGUgKipueWNmbGlnaHRzMTMqKiBjb250aWVuZSBpbmZvcm1hY2nDs24gc29icmUgdG9kb3MgbG9zIHZ1ZWxvcyBxdWUgcGFydGllcm9uIGRlc2RlIE51ZXZhIFlvcmsgKEVXUiwgSkZLIFkgTEdBKSBhIGRlc3Rpbm9zIGVuIGxvcyBFc3RhZG9zIFVuaWRvcyBlbiAyMDEzLiBGdWVyb24gMzM2LDc3NiB2dWVsb3MgZW4gdG90YWwuIFBhcmEgYXl1ZGFyIGEgY29tcHJlbmRlciBsYXMgY2F1c2FzIGRlIGxvcyByZXRyYXNvcywgdGFtYmnDqW4gaW5jbHV5ZSBvdHJvcyBjb25qdW50b3MgZGUgZGF0b3Mgw7p0aWxlcy4gIA0KDQpFc3RlIHBhcXVldGUgaW5jbHV5ZSBsYXMgc2lndWllbnRlcyB0YWJsYXM6IA0KDQorIGZsaWdodHMgPSB0b2RvcyBsb3MgdnVlbG9zIHF1ZSBzYWxpZXJvbiBkZSBOdWV2YSBZb3JrIGVuIDIwMTMgICANCisgd2VhdGhlciA9IGRhdG9zIG1ldGVvcm9sw7NnaWNvcyBwb3IgaG9yYSBkZSBjYWRhIGFlcm9wdWVydG8NCisgcGxhbmVzID0gaW5mb3JtYWNpw7NuIGRlIGNvbnN0cnVjY2nDs24gZGUgY2FkYSBhdmnDs24gIA0KKyBhaXJwb3J0cyA9IG5vbWJyZXMgeSB1YmljYWNpb25lcyBkZSBhZXJvcHVlcnRvcw0KKyBhaXJsaW5lcyA9IHJlbGFjacOzbiBlbnRyZSBub21icmVzIHkgY8OzZGlnb3MgZGUgbGFzIGFlcm9sw61uZWFzIA0KDQpGdWVudGU6ICAgIA0KW09yaWdlbiBkZSBsb3MgZGF0b3NdKGh0dHBzOi8vY3Jhbi5yLXByb2plY3Qub3JnL3dlYi9wYWNrYWdlcy9ueWNmbGlnaHRzMTMvbnljZmxpZ2h0czEzLnBkZikNCg0KIyA8c3BhbiBzdHlsZT0iY29sb3I6IEJsdWU7Ij5JbnN0YWxhciBwYXF1ZXRlcyB5IGxsYW1hciBsaWJyZXLDrWFzPC9zcGFuPg0KYGBge3J9DQojIGluc3RhbGwucGFja2FnZXMoIm55Y2ZsaWdodHMxMyIpDQpsaWJyYXJ5KG55Y2ZsaWdodHMxMykNCiMgaW5zdGFsbC5wYWNrYWdlcygidGlkeXZlcnNlIikNCmxpYnJhcnkodGlkeXZlcnNlKQ0KYGBgDQoNCg0KDQojIDxzcGFuIHN0eWxlPSJjb2xvcjogQmx1ZTsiPkd1YXJkYXIgYmFzZXMgZGUgZGF0b3M8L3NwYW4+DQpgYGB7cn0NCmZsaWdodHMgPC0gZmxpZ2h0cw0Kd2VhdGhlciA8LSB3ZWF0aGVyDQpwbGFuZXMgPC0gcGxhbmVzDQphaXJwb3J0cyA8LSBhaXJwb3J0cw0KYWlybGluZXMgPC0gYWlybGluZXMgDQpgYGANCg0KIyA8c3BhbiBzdHlsZT0iY29sb3I6IEJsdWU7Ij5SZWxhY2lvbiBlbnRyZSBiYXNlIGRlIGRhdG9zPC9zcGFuPg0KDQohW10oQzpcXFVzZXJzXFxCb290Q2FtcFxcRG93bmxvYWRzXFxyZWxhdGlvbmFsLW55Y2ZsaWdodHMucG5nKQ0KDQojIDxzcGFuIHN0eWxlPSJjb2xvcjogQmx1ZTsiPkZ1bmNpb25lcyBCw6FzaWNhcyBkZSBNYW5lam8gZGUgRGF0b3M8L3NwYW4+DQoNCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjogQmx1ZTsiPlNlbGVjdDwvc3Bhbj4NCkxhIGZ1bmNpw7NuICpzZWxlY3QqIHNpcnZlIHBhcmEgc2VsZWNjaW9uYXIgY29sdW1uYXMgZGUgdW5hIHRhYmxhICgqZGF0YSBmcmFtZSopLg0KYGBge3J9DQpkZjEgPC0gZmxpZ2h0cyAlPiUgc2VsZWN0KGNhcnJpZXIsIGZsaWdodCkgIyBTZWxlY2Npw7NuIGRlIGNvbHVtbmFzIGVzcGVjw61maWNhcw0KZGYyIDwtIGZsaWdodHMgJT4lIHNlbGVjdChjYXJyaWVyOmRpc3RhbmNlKSAjIFNlbGVjY2nDs24gZGUgcmFuZ28gZGUgY29sdW1uYXMgDQpkZjMgPC0gZmxpZ2h0cyAlPiUgc2VsZWN0KC1jYXJyaWVyLCAtZmxpZ2h0KSAjIEVsaW1pbmFyIGNvbHVtbmFzIGVzcGVjw61maWNhcyANCmRmNCA8LSBmbGlnaHRzICU+JSBzZWxlY3QoLWNhcnJpZXI6LWRpc3RhbmNlKSAjIEVsaW1pbmFyIHJhbmdvIGRlIGNvbHVtbmFzIA0KZGY1IDwtIGZsaWdodHMgJT4lIHNlbGVjdChhZXJvbGluZWEgPSBjYXJyaWVyKSAjIFNlbGVjY2lvbmEgdW5hIGNvbHVtbmEgeSBsZSBjYW1iaWEgZWwgbm9tYnJlIA0KZGY2IDwtIGZsaWdodHMgJT4lIHJlbmFtZShhZXJvbGluZWEgPWNhcnJpZXIpICMgQ2FtYmlhIGVsIG5vbWJyZSBhIHVuYSBjb2x1bW5hIA0KYGBgDQoNCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjogQmx1ZTsiPkZpbHRlcjwvc3Bhbj4NCkxhIGZ1bmNpw7NuICpmaWx0ZXIqIHNpcnZlIHBhcmEgc2VsZWNjaW9uYXIgcmVuZ2xvbmVzIGRlIHVuYSB0YWJsYSAoKmRhdGEgZnJhbWUqKS4NCkxhIGZ1bmNpw7NuICpzbGljZSogc2lydmUgcGFyYSBzZWxlY2Npb25hciBmaWxhcyBlbiBlc3BlY2lmaWNvICgqZGF0YSBmcmFtZSopLg0KYGBge3J9DQpkZjcgPC0gZmxpZ2h0cyAlPiUgZmlsdGVyKGRlcF9kZWxheSA+PTUwMCkgIyBFeHRyYWUgcmVuZ2xvbmVzIHF1ZSBjdW1wbGFuIGNvbmRpY2nDs24gDQoNCiMgSWd1YWwgPT0gLCBEZXNpZ3VhbCA9IT0gLCBNYXlvciBxdWUgPiAsIE1heW9yIG8gaWd1YWwgcXVlID49ICwgTWVub3IgcXVlIDwgLCBNZW5vciBvIGlndWFsIHF1ZSA8PSANCiMgT3BlcmFkb3JlcyBsw7NnaWNvczogQU5EICYsIE9SIHwgLCBOT1QgISANCg0KDQpkZjggPC0gZmxpZ2h0cyAlPiUgZmlsdGVyKGRlcF9kZWxheSA+PTUwMCxkZXBfZGVsYXk8NjAwKSAjIEV4dHJhZSByZW5nbG9uZXMgcXVlIGN1bXBsYW4gZG9zIGNvbmRpY2lvbmVzIA0KZGY5IDwtIGZsaWdodHMgJT4lIHNsaWNlKDEwMDA6MTA5OSkgIyBFeHRyYWUgbG9zIG7Dum1lcm9zIGRlIGxvcyByZW5nbG9uZXMgaW5kaWNhZG9zLCBzaW4gaW1wb3J0YXIgc3VzIHZhbG9yZXMgDQpgYGANCg0KIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiBCbHVlOyI+RGlzdGluY3Q8L3NwYW4+DQpMYSBmdW5jacOzbiAqZGlzdGluY3QqIHNpcnZlIHBhcmEgZWxpbWluYXIgcmVuZ2xvbmVzIGR1cGxpY2Fkb3MuDQpgYGB7cn0NCmRmMTAgPC0gZGlzdGluY3QoZmxpZ2h0cykgIyBEZWphciBzw7NsbyBsb3MgcmVuZ2xvbmVzIGRpZmVyZW50ZXMsIGJvcnJhIHRvZG9zIGxvcyByZXBldGlkb3MgDQpgYGANCg0KIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiBCbHVlOyI+TWVyZ2U8L3NwYW4+DQpMYSBmdW5jacOzbiAqbWVyZ2UqIHNpcnZlIHBhcmEganVudGFyIGJhc2VzIGRlIGRhdG9zLg0KYGBge3J9DQpiZGdyYW5kZSA8LSBtZXJnZShmbGlnaHRzLGFpcmxpbmVzLCBieT0iY2FycmllciIpIA0KYmRncmFuZGUyIDwtIG1lcmdlKGJkZ3JhbmRlLHBsYW5lcywgYnk9InRhaWxudW0iKQ0KYGBgDQoNCiMjIDxzcGFuIHN0eWxlPSJjb2xvcjogQmx1ZTsiPk11dGF0ZTwvc3Bhbj4NCmBgYHtyfQ0KYmRncmFuZGUzIDwtIG11dGF0ZShiZGdyYW5kZTIsZGlzdF9tdHMgPSBkaXN0YW5jZSoxLjYwOSkgIyBBZ3JlZ2EgdmFyaWFibGVzIG51ZXZhcyBjYWxjdWxhZGFzIGEgcGFydGlyIGRlIHZhcmlhYmxlcyBleGlzdGVudGVzIGVuIGxhIGJhc2UgZGUgZGF0b3MNCmBgYA0KDQojIyA8c3BhbiBzdHlsZT0iY29sb3I6IEJsdWU7Ij5FamVyY2ljaW9zPC9zcGFuPg0KMS4gRW5jdWVudHJhIHRvZG9zIGxvcyB2dWVsb3MgcXVlIHR1dmllcm9uIHVuIGF0cmFzbyBlbiBsbGVnYWRhIGRlIDIgaG9yYXMgbyBtw6FzIA0KYGBge3J9DQplamVyY2ljaW8xIDwtIGJkZ3JhbmRlMiAlPiUgZmlsdGVyKGFycl9kZWxheT49MTIwKQ0KYGBgDQoNCjIuIEVuY3VlbnRyYSB0b2RvcyBsb3MgdnVlbG9zIHF1ZSBsbGVnYXJvbiBhIEhvdXN0b24gKElBSCBvIEhPVSkNCmBgYHtyfQ0KZWplcmNpY2lvMiA8LSBiZGdyYW5kZTIgJT4lIGZpbHRlcihkZXN0ID09ICJJQUgiIHwgZGVzdCA9PSAiSE9VIikNCmBgYA0KDQozLkVuY3VlbnRyYSB0b2RvcyBsb3MgdnVlbG9zIG9wZXJhZG9zIHBvciBVbml0ZWQsIEFtZXJpY2FuIG8gRGVsdGENCmBgYHtyfQ0KZWplcmNpY2lvMyA8LSBiZGdyYW5kZTIgJT4lIGZpbHRlcihjYXJyaWVyICVpbiUgYygiVUEiICwgIkFBIiAsICJETCIpKQ0KYGBgDQoNCkVqZXJjaWNpbyA0LiBFbmN1ZW50cmEgdG9kb3MgbG9zIHZ1ZWxvcyBxdWUgZGVzcGVnYXJvbiBlbiBKdWxpbywgQWdvc3RvIG8gU2VwdGllbWJyZS4NCmBgYHtyfQ0KZWplcmNpY2lvNGEgPC0gYmRncmFuZGUyICU+JSBmaWx0ZXIobW9udGggPT0gNyB8IG1vbnRoID09IDggfCBtb250aCA9PSA5KQ0KDQplamVyY2ljaW80YiA8LSBiZGdyYW5kZTIgJT4lIGZpbHRlcihtb250aCAlaW4lIGMoNzo5KSkNCmBgYA0KDQpFamVyY2ljaW8gNS4gRW5jdWVudHJhIHRvZG9zIGxvcyB2dWVsb3MgcXVlIGFycml2YXJvbiBtw6FzIGRlIDIgaG9yYXMgdGFyZGUsIHBlcm8gbm8gZGVzcGVnYXJvbiB0YXJkZS4NCmBgYHtyfQ0KZWplcmNpY2lvNSA8LSBiZGdyYW5kZTIgJT4lIGZpbHRlcihhcnJfZGVsYXk+MTIwICYgZGVwX2RlbGF5PD0wKQ0KYGBgDQoNCkVqZXJjaWNpbyA2LiBFbmN1ZW50cmEgdG9kb3MgbG9zIHZ1ZWxvcyBxdWUgc2UgcmV0cmFzYXJvbiBhbCBtZW5vcyAxIGhvcmEsIHBlcm8gcXVlIGxsZWdhcm9uIGFudGVzIDMwIG1pbnV0b3MgbyBtw6FzLg0KYGBge3J9DQplamVyY2ljaW82IDwtIGJkZ3JhbmRlMiAlPiUgZmlsdGVyKGRlcF9kZWxheT49NjAgJiBhcnJfZGVsYXk8PS0zMCkNCmBgYA0KDQpFamVyY2ljaW8gNy4gRW5jdWVudHJhIHRvZG9zIGxvcyB2dWVsb3MgcXVlIHNhbGllcm9uIGVudHJlIGxhIG1lZGlhbm9jaGUgeSBsYXMgNiBhLm0uIA0KYGBge3J9DQplamVyY2ljaW83IDwtIGJkZ3JhbmRlMiAlPiUgZmlsdGVyKGRlcF90aW1lID09IDI0MDAgfCBkZXBfdGltZSA8PSA2MDApDQpgYGANCg0KIyMgPHNwYW4gc3R5bGU9ImNvbG9yOiBCbHVlOyI+QXJyYW5nZTwvc3Bhbj4NClNpbWlsYXIgYSBmaWx0ZXIoKSBwZXJvIGVuIGx1Z2FyIGRlIHNlbGVjY2lvbmFyIHJlbmdsb25lcywgbG9zIG9yZGVuYSBkZSBtZW5vciBhIG1heW9yLg0KYGBge3J9DQpkZjExIDwtIGFycmFuZ2UoYmRncmFuZGUyLHllYXIueCxtb250aCxkYXksKQ0KYGBgDQoNCnBhcmEgYWNvbW9kYXIgZGUgbWF5b3IgYSBtZW5vci4gDQpgYGB7cn0NCmRmMTIgPC0gYXJyYW5nZShiZGdyYW5kZTIseWVhci54LGRlc2MobW9udGgpLGRheSkNCmBgYA0KDQojIyA8c3BhbiBzdHlsZT0iY29sb3I6IEJsdWU7Ij5TdW1tYXJpemU8L3NwYW4+DQpDb2xhcHNhIHVuYSB0YWJsYSBhIHVuIHPDs2xvIHJlbmdsw7NuIA0KYGBge3J9DQojIE9idMOpbiBlbCByZXRyYXNvIHByb21lZGlvIGRlIGRlc3BlZ3VlIGRlIHRvZG9zIGxvcyB2dWVsb3MgDQpzdW1tYXJpemUoYmRncmFuZGUyLG1lYW4oZGVwX2RlbGF5LCBuYS5ybT1UUlVFKSkNCmBgYA0KDQojIyA8c3BhbiBzdHlsZT0iY29sb3I6IEJsdWU7Ij5Hcm91cCBieTwvc3Bhbj4NCkFncnVwYSB0YWJsYSBiYXNhZG8gZW4gYWxndW5hcyBjb2x1bW5hcw0KYGBge3J9DQojIE9idGVuZXIgZWwgcmV0cmFzbyBwcm9tZWRpbyBkZSBkZXNwZWd1ZSBwb3IgZMOtYSANCnBvcl9kaWEgPC0gZ3JvdXBfYnkoYmRncmFuZGUyLCB5ZWFyLngsbW9udGgsZGF5KQ0Kc3VtbWFyaXplKHBvcl9kaWEsbWVhbihkZXBfZGVsYXksIG5hLnJtPVRSVUUpKQ0KYGBgDQoNCg0K