Contexto
El paquete nycflights13 contiene información sobre
todos los vuelos que partieron desde Nueva York (BWR, 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 siguentes 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) # Seleccionar una columna y 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).
df7 <- flights %>% filter(dep_delay >=500) # Extrae renglones que cumplen condición
# Condicionales: 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) # Extraer renglones que cumplan con 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 solo 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_km = distance*1.609) # Agrega variables nuevas calculadas a partir de variables existentes en la base de datos
Ejercicios
1.Encuentra todos los vuelos que tuvieron un atraso en llegada de 2
horas o más.
ejercicio1 <- bdgrande2 %>% filter(arr_delay >=120)
2.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"))
4.Encuentra todos los vuelos que despegaron en Julio, Agosto o
Septiembre.
ejercicio4 <- bdgrande2 %>% filter(month %in% c(7,8,9))
ejercicio4b <- bdgrande2 %>% filter(month == 7 | month == 8 | month == 9)
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)
ejercicio5b <- bdgrande2 %>% filter(arr_delay > 120 & dep_time==sched_dep_time)
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)
7.Encuentra todos los vuelos que salieron de entre la medianoche y
las 6:00AM
ejercicio7 <- bdgrande2 %>% filter(dep_time <= 600 | dep_time == 2400)
Arrange
Es 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 solo renglón.
# Obtén el retraso promedio de despeguede 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
LS0tDQp0aXRsZTogIkRhdGEgV3JhbmdsaW5nIChQYXJ0ZSAxKSINCmF1dGhvcjogIkx1aXMgRMOhdmlsYSAtIEEwMTI4NTUyMSINCmRhdGU6ICIyMDI0LTAyLTE5Ig0Kb3V0cHV0OiANCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IFRSVUUNCiAgICB0b2NfZmxvYXQ6IFRSVUUNCiAgICBjb2RlX2Rvd25sb2FkOiBUUlVFDQogICAgdGhlbWU6IGNvc21vDQotLS0NCg0KICFbXShDOlxcVXNlcnNcXEFkcmnDoW5cXERvd25sb2Fkc1xcamZrLW5ldy10ZXJtaW5hbC1hdC1uZXcteW9yay0xLTE5MjB4MTA4MC5wbmcpDQogDQojIDxzcGFuIHN0eWxlPSAiY29sb3I6IGJsdWU7Ij5Db250ZXh0bzwvc3Bhbj4NCkVsIHBhcXVldGUgKipueWNmbGlnaHRzMTMqKiBjb250aWVuZSBpbmZvcm1hY2nDs24gc29icmUgdG9kb3MgbG9zIHZ1ZWxvcyBxdWUgcGFydGllcm9uIGRlc2RlIE51ZXZhIFlvcmsgKEJXUiwgSkZLIHkgTEdBKSBhIGRlc3Rpbm9zIGVuIGxvcyBFc3RhZG9zIFVuaWRvcyBlbiAyMDEzLiBGdWVyb24gMzM2LDc3NiB2dWVsb3MgZW4gdG90YWwuIFBhcmEgYXl1ZGFyIGEgY29tcHJlbmRlciBsYXMgY2F1c2FzIGRlIGxvcyByZXRyYXNvcywgdGFtYmnDqW4gaW5jbHV5ZSBvdHJvcyBjb25qdW50b3MgZGUgZGF0b3Mgw7p0aWxlcy4gIA0KDQogRXN0ZSBwYXF1ZXRlIGluY2x1eWUgbGFzIHNpZ3VlbnRlcyB0YWJsYXM6ICANCg0KKyBmbGlnaHRzID0gdG9kb3MgbG9zIHZ1ZWxvcyBxdWUgc2FsaWVyb24gZGUgTnVldmEgWW9yayBlbiAyMDEzICANCisgd2VhdGhlciA9IGRhdG9zIG1ldGVvcm9sw7NnaWNvcyBwb3IgaG9yYSBkZSBjYWRhIGFlcm9wdWVydG8gIA0KKyBwbGFuZXMgPSBpbmZvcm1hY2nDs24gZGUgY29uc3RydWNjacOzbiBkZSBjYWRhIGF2acOzbiAgDQorIGFpcnBvcnRzID0gbm9tYnJlcyB5IHViaWNhY2lvbmVzIGRlIGFlcm9wdWVydG9zICANCisgYWlybGluZXMgPSByZWxhY2nDs24gZW50cmUgbm9tYnJlcyB5IGPDs2RpZ29zIGRlIGxhcyBhZXJvbMOtbmVhcyAgDQoNCiBGdWVudGU6ICANCiBbT3JpZ2VuIGRlIGxvcyBkYXRvc10oaHR0cHM6Ly9jcmFuLnItcHJvamVjdC5vcmcvd2ViL3BhY2thZ2VzL255Y2ZsaWdodHMxMy9ueWNmbGlnaHRzMTMucGRmKQ0KDQojIDxzcGFuIHN0eWxlPSAiY29sb3I6IGJsdWU7Ij5JbnN0YWxhciBwYXF1ZXRlcyB5IGxsYW1hciBsaWJyZXLDrWFzPC9zcGFuPg0KYGBge3J9DQojIGluc3RhbGwucGFja2FnZXMoIm55Y2ZsaWdodHMxMyIpDQpsaWJyYXJ5KG55Y2ZsaWdodHMxMykNCiMgaW5zdGFsbC5wYWNrYWdlcygidGlkeXZlcnNlIikNCmxpYnJhcnkodGlkeXZlcnNlKQ0KYGBgDQoNCiMgPHNwYW4gc3R5bGU9ICJjb2xvcjogYmx1ZTsiPkd1YXJkYXIgYmFzZXMgZGUgZGF0b3M8L3NwYW4+DQpgYGB7cn0NCmZsaWdodHMgPC0gZmxpZ2h0cw0Kd2VhdGhlciA8LSB3ZWF0aGVyDQpwbGFuZXMgPC0gcGxhbmVzDQphaXJwb3J0cyA8LSBhaXJwb3J0cw0KYWlybGluZXMgPC0gYWlybGluZXMNCmBgYA0KDQojIDxzcGFuIHN0eWxlPSAiY29sb3I6IGJsdWU7Ij5SZWxhY2nDs24gZW50cmUgbGFzIGJhc2VzIGRlIGRhdG9zPC9zcGFuPg0KICFbXShDOlxcVXNlcnNcXEFkcmnDoW5cXERvd25sb2Fkc1xccmVsYXRpb25hbC1ueWNmbGlnaHRzLnBuZykNCiANCiMgPHNwYW4gc3R5bGU9ICJjb2xvcjogYmx1ZTsiPkZ1bmNpb25lcyBiw6FzaWNhcyBkZSBNYW5lam8gZGUgRGF0b3M8L3NwYW4+DQoNCiMjIDxzcGFuIHN0eWxlPSAiY29sb3I6IGJsdWU7Ij5TZWxlY3Q8L3NwYW4+DQogTGEgZnVuY2nDs24gKnNlbGVjdCogc2lydmUgcGFyYSBzZWxlY2Npb25hciBjb2x1bW5hcyBkZSB1bmEgdGFibGEgKCpkYXRhIGZyYW1lKikuDQpgYGB7cn0NCiBkZjEgPC0gZmxpZ2h0cyAlPiUgc2VsZWN0KGNhcnJpZXIsZmxpZ2h0KSAjIFNlbGVjY2nDs24gZGUgY29sdW1uYXMgZXNwZWPDrWZpY2FzDQogZGYyIDwtIGZsaWdodHMgJT4lIHNlbGVjdChjYXJyaWVyOmRpc3RhbmNlKSAjIFNlbGVjY2nDs24gZGUgcmFuZ28gZGUgY29sdW1uYXMNCiBkZjMgPC0gZmxpZ2h0cyAlPiUgc2VsZWN0KC1jYXJyaWVyLCAtZmxpZ2h0KSAjIEVsaW1pbmFyIGNvbHVtbmFzIGVzcGVjw61maWNhcw0KIGRmNCA8LSBmbGlnaHRzICU+JSBzZWxlY3QoLWNhcnJpZXI6LWRpc3RhbmNlKSAjIEVsaW1pbmFyIHJhbmdvIGRlIGNvbHVtbmFzDQogZGY1IDwtIGZsaWdodHMgJT4lIHNlbGVjdChhZXJvbGluZWEgPSBjYXJyaWVyKSAjIFNlbGVjY2lvbmFyIHVuYSBjb2x1bW5hIHkgY2FtYmlhIGVsIG5vbWJyZQ0KIGRmNiA8LSBmbGlnaHRzICU+JSByZW5hbWUoYWVyb2xpbmVhID0gY2FycmllcikgIyBDYW1iaWEgZWwgbm9tYnJlIGEgdW5hIGNvbHVtbmENCmBgYA0KIA0KIyMgPHNwYW4gc3R5bGU9ICJjb2xvcjogYmx1ZTsiPkZpbHRlcjwvc3Bhbj4NCkxhIGZ1bmNpw7NuICpmaWx0ZXIqIHNpcnZlIHBhcmEgc2VsZWNjaW9uYXIgcmVuZ2xvbmVzIGRlIHVuYSB0YWJsYSAoKmRhdGEgZnJhbWUqKS4NCmBgYHtyfQ0KZGY3IDwtIGZsaWdodHMgJT4lIGZpbHRlcihkZXBfZGVsYXkgPj01MDApICMgRXh0cmFlIHJlbmdsb25lcyBxdWUgY3VtcGxlbiBjb25kaWNpw7NuDQojIENvbmRpY2lvbmFsZXM6IElndWFsID09LCBEZXNpZ3VhbCA9IT0sIE1heW9yIHF1ZSA+LCBNYXlvciBvIGlndWFsIHF1ZSA+PSwgTWVub3IgcXVlIDwsIE1lbm9yIG8gaWd1YWwgcXVlIDw9DQojIE9wZXJhZG9yZXMgbMOzZ2ljb3M6IEFORCAmLCBPUiB8LCBOT1QgISANCmRmOCA8LSBmbGlnaHRzICU+JSBmaWx0ZXIoZGVwX2RlbGF5ID49NTAwLGRlcF9kZWxheSA8NjAwKSAjIEV4dHJhZXIgcmVuZ2xvbmVzIHF1ZSBjdW1wbGFuIGNvbiBkb3MgY29uZGljaW9uZXMNCmRmOSA8LSBmbGlnaHRzICU+JSBzbGljZSgxMDAwOjEwOTkpICMgRXh0cmFlIGxvcyBuw7ptZXJvcyBkZSBsb3MgcmVuZ2xvbmVzIGluZGljYWRvcywgc2luIGltcG9ydGFyIHN1cyB2YWxvcmVzDQpgYGANCg0KIyMgPHNwYW4gc3R5bGU9ICJjb2xvcjogYmx1ZTsiPkRpc3RpbmN0PC9zcGFuPg0KTGEgZnVuY2nDs24gKmRpc3RpbmN0KiBzaXJ2ZSBwYXJhIGVsaW1pbmFyIHJlbmdsb25lcyBkdXBsaWNhZG9zLg0KYGBge3J9DQpkZjEwIDwtIGRpc3RpbmN0KGZsaWdodHMpICMgRGVqYXIgc29sbyBsb3MgcmVuZ2xvbmVzIGRpZmVyZW50ZXMsIGJvcnJhIHRvZG9zIGxvcyByZXBldGlkb3MuDQpgYGANCg0KIyMgPHNwYW4gc3R5bGU9ICJjb2xvcjogYmx1ZTsiPk1lcmdlPC9zcGFuPg0KTGEgZnVuY2nDs24gKm1lcmdlKiBzaXJ2ZSBwYXJhIGp1bnRhciBiYXNlcyBkZSBkYXRvcw0KYGBge3J9DQpiZGdyYW5kZSA8LSBtZXJnZShmbGlnaHRzLGFpcmxpbmVzLGJ5PSJjYXJyaWVyIikgDQpiZGdyYW5kZTIgPC0gbWVyZ2UoYmRncmFuZGUscGxhbmVzLCBieT0idGFpbG51bSIpDQpgYGANCg0KIyMgPHNwYW4gc3R5bGU9ICJjb2xvcjpibHVlOyAiPk11dGF0ZTwvc3Bhbj4NCmBgYHtyfQ0KYmRncmFuZGUzIDwtIG11dGF0ZShiZGdyYW5kZTIsIGRpc3Rfa20gPSBkaXN0YW5jZSoxLjYwOSkgIyBBZ3JlZ2EgdmFyaWFibGVzIG51ZXZhcyBjYWxjdWxhZGFzIGEgcGFydGlyIGRlIHZhcmlhYmxlcyBleGlzdGVudGVzIGVuIGxhIGJhc2UgZGUgZGF0b3MNCmBgYA0KDQojIyBFamVyY2ljaW9zDQoxLkVuY3VlbnRyYSB0b2RvcyBsb3MgdnVlbG9zIHF1ZSB0dXZpZXJvbiB1biBhdHJhc28gZW4gbGxlZ2FkYSBkZSAyIGhvcmFzIG8gbcOhcy4NCmBgYHtyfQ0KZWplcmNpY2lvMSA8LSBiZGdyYW5kZTIgJT4lIGZpbHRlcihhcnJfZGVsYXkgPj0xMjApDQpgYGANCiANCjIuRW5jdWVudHJhIHRvZG9zIGxvcyB2dWVsb3MgcXVlIGxsZWdhcm9uIGEgSG91c3RvbiAoSUFIIG8gSE9VKQ0KYGBge3J9DQplamVyY2ljaW8yIDwtIGJkZ3JhbmRlMiAlPiUgZmlsdGVyKGRlc3QgPT0gIklBSCIgfCBkZXN0ID09ICJIT1UiKQ0KYGBgDQoNCjMuRW5jdWVudHJhIHRvZG9zIGxvcyB2dWVsb3Mgb3BlcmFkb3MgcG9yIFVuaXRlZCwgQW1lcmljYW4gbyBEZWx0YQ0KYGBge3J9DQplamVyY2ljaW8zIDwtIGJkZ3JhbmRlMiAlPiUgZmlsdGVyKGNhcnJpZXIgJWluJSBjKCJVQSIsIkFBIiwiREwiKSkNCmBgYA0KDQo0LkVuY3VlbnRyYSB0b2RvcyBsb3MgdnVlbG9zIHF1ZSBkZXNwZWdhcm9uIGVuIEp1bGlvLCBBZ29zdG8gbyBTZXB0aWVtYnJlLg0KYGBge3J9DQplamVyY2ljaW80IDwtIGJkZ3JhbmRlMiAlPiUgZmlsdGVyKG1vbnRoICVpbiUgYyg3LDgsOSkpDQplamVyY2ljaW80YiA8LSBiZGdyYW5kZTIgJT4lIGZpbHRlcihtb250aCA9PSA3IHwgbW9udGggPT0gOCB8IG1vbnRoID09IDkpDQpgYGANCg0KNS5FbmN1ZW50cmEgdG9kb3MgbG9zIHZ1ZWxvcyBxdWUgYXJyaXZhcm9uIG3DoXMgZGUgMiBob3JhcyB0YXJkZSwgcGVybyBubyBkZXNwZWdhcm9uIHRhcmRlLg0KYGBge3J9DQplamVyY2ljaW81IDwtIGJkZ3JhbmRlMiAlPiUgZmlsdGVyKGFycl9kZWxheSA+IDEyMCAmIGRlcF9kZWxheSA8PSAwKQ0KZWplcmNpY2lvNWIgPC0gYmRncmFuZGUyICU+JSBmaWx0ZXIoYXJyX2RlbGF5ID4gMTIwICYgZGVwX3RpbWU9PXNjaGVkX2RlcF90aW1lKQ0KYGBgDQoNCjYuRW5jdWVudHJhIHRvZG9zIGxvcyB2dWVsb3MgcXVlIHNlIHJldHJhc2Fyb24gYWwgbWVub3MgMSBob3JhLCBwZXJvIHF1ZSBsbGVnYXJvbiBhbnRlcyAzMCBtaW51dG9zIG8gbcOhcy4NCmBgYHtyfQ0KZWplcmNpY2lvNiA8LSBiZGdyYW5kZTIgJT4lIGZpbHRlcihkZXBfZGVsYXkgPj0gNjAgJiBhcnJfZGVsYXkgPD0gLTMwKQ0KYGBgDQoNCjcuRW5jdWVudHJhIHRvZG9zIGxvcyB2dWVsb3MgcXVlIHNhbGllcm9uIGRlIGVudHJlIGxhIG1lZGlhbm9jaGUgeSBsYXMgNjowMEFNDQpgYGB7cn0NCmVqZXJjaWNpbzcgPC0gYmRncmFuZGUyICU+JSBmaWx0ZXIoZGVwX3RpbWUgPD0gNjAwIHwgZGVwX3RpbWUgPT0gMjQwMCkNCmBgYA0KDQojIyA8c3BhbiBzdHlsZT0gImNvbG9yOmJsdWU7ICI+QXJyYW5nZTwvc3Bhbj4NCkVzIHNpbWlsYXIgYSBmaWx0ZXIgcGVybyBlbiBsdWdhciBkZSBzZWxlY2Npb25hciByZW5nbG9uZXMsIGxvcyBvcmRlbmEgZGUgbWVub3IgYSBtYXlvci4NCmBgYHtyfQ0KZGYxMSA8LSBhcnJhbmdlKGJkZ3JhbmRlMix5ZWFyLngsbW9udGgsZGF5KQ0KYGBgDQoNClBhcmEgYWNvbW9kYXIgZGUgbWF5b3IgYSBtZW5vci4NCmBgYHtyfQ0KZGYxMiA8LSBhcnJhbmdlKGJkZ3JhbmRlMix5ZWFyLngsZGVzYyhtb250aCksZGF5KQ0KYGBgDQoNCiMjIDxzcGFuIHN0eWxlPSAiY29sb3I6Ymx1ZTsgIj5TdW1tYXJpemU8L3NwYW4+DQpDb2xhcHNhIHVuYSB0YWJsYSBhIHVuIHNvbG8gcmVuZ2zDs24uDQpgYGB7cn0NCiMgT2J0w6luIGVsIHJldHJhc28gcHJvbWVkaW8gZGUgZGVzcGVndWVkZSB0b2RvcyBsb3MgdnVlbG9zDQpzdW1tYXJpemUoYmRncmFuZGUyLG1lYW4oZGVwX2RlbGF5LCBuYS5ybT1UUlVFKSkNCmBgYA0KIyMgPHNwYW4gc3R5bGU9ICJjb2xvcjpibHVlOyAiPkdyb3VwIGJ5PC9zcGFuPg0KQWdydXBhIHRhYmxhIGJhc2FkbyBlbiBhbGd1bmFzIGNvbHVtbmFzDQpgYGB7cn0NCiMgT2J0ZW5lciBlbCByZXRyYXNvIHByb21lZGlvIGRlIGRlc3BlZ3VlIHBvciBkw61hDQpwb3JfZGlhIDwtIGdyb3VwX2J5KGJkZ3JhbmRlMiwgeWVhci54LG1vbnRoLGRheSkNCnN1bW1hcml6ZShwb3JfZGlhLG1lYW4oZGVwX2RlbGF5LG5hLnJtPVRSVUUpKQ0KYGBgDQojIENvbmNsdXNpw7NuDQpIYWxsYXpnb3MgeSByYXpvbmVzIHBvciBsYXMgY3VhbMOpcyBsb3MgdnVlbG9zIHNlIHJldHJhc2FuDQo=