Contexto
El paquete nycflights13 contiene infromación sobre
todos los vuelos que partieron desde Nueva York (EWR, JFK y LGA) a
destinos en los Estados Unidos. Fueron 336,776 vuelos en total. Para
ayudar a comporender las causas de los restrasos, tambien 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 metereológicos por hora de cada aeropuerto
- planes = información de contruccion 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 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) #seleccionar unas columnas en especifico
df2 <- flights %>% select(carrier:distance) #seleccionar de una columan a una columna
df3 <- flights %>% select(-carrier, -flight) #seleccionar todo menos esas columnas
df4 <- flights %>% select(-carrier:-distance) #todas las columnas menos las que estan entre carrier y distance incluyendo estas 2
df5 <- flights %>% select(aerolinea = carrier) #nombrar una variable o cambiar el idioma
df6 <- flights %>% rename(aerolinea = carrier ) #ponerle nombre a una variable
Select
La función filter sirve para seleccionar renglonres de una
tabla (data frame)
df7 <- flights %>% filter(dep_delay >=500) #seleccionar renglones que sean mayor o igual a una cantidad (que cumplan la condicion)
# Condiciones: Igual ==, Desigual =!=, Mayor que >, Mayor o igual que >=, Mneor que <, Menor o igual que <=
# Operadores logisticos: AND &, OR |, NOT !
df8 <- flights %>% filter(dep_delay >= 500, dep_delay <600) #seleccionar renglones que esten entre una cantidad de datos
df9 <- flights %>% slice(1000:1099) #seleccionar solo renglones en ese rango (un recorte de tabla en esos renglones)
Distinct
La función distinct sirve para eliminar renglones
duplicados.
df10 <- distinct(flights) #Dejar solo los renglones diferentes, borra todos los repertidos
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 varibles axistentes en la base de datos
##Ejercicios 1. Encuentra todos los vuelos que tuvieron un atraso de
2 hrs o más.
ejercicio1 <- bdgrande2 %>% filter(arr_delay>=120)
- Encuentra todos los vuelos que llegaron a Houston
ejercicio2 <- bdgrande2 %>% filter(dest =="IAH" | dest == "HOU")
- 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.
ejercicio4 <- bdgrande2 %>% filter( month == 7 | month == 8 | month == 9)
ejercicio4a <- 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_time == sched_dep_time)
ejercicio5b <- 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 solo renglón.
# Obten el retraso promedio de despegue de toos los vuelos
summarize(bdgrande2, mean(dep_delay, na.rm=TRUE))
## mean(dep_delay, na.rm = TRUE)
## 1 13.17979
Group by
Agrupa tabla basada en algunas columnas.
#Obtener el rertraso promedio de despegue por dia
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
LS0tCnRpdGxlOiAiRGF0YSB3cmFuZ2xpbmcgKFBhcnRlIDEpIgphdXRob3I6ICJKb3JnZSBQb25zIEEwMTQyNDEwOCIKZGF0ZTogIjIwMjQtMDItMTkiCm91dHB1dDoKIGh0bWxfZG9jdW1lbnQ6IAogICAgdG9jOiBUUlVFCiAgICB0b2NfZmxvYXQ6IFRSVUUKICAgIGNvZGVfZG93bmxvYWQ6IFRSVUUKICAgIHRoZW1lOiB5ZXRpCi0tLQoKIVtdKC9Vc2Vycy9qb3Jwb25zL0Rlc2t0b3AvcG5nLXRyYW5zcGFyZW50LWFpcnBsYW5lLWZsaWdodC1maXhlZC13aW5nLWFpcmNyYWZ0LWFpcmxpbmVyLWFpcnBsYW5lLXBob3RvZ3JhcGh5LW1vZGUtb2YtdHJhbnNwb3J0LWFpcnBsYW5lLXRodW1ibmFpbC5wbmcpCgojIDxzcGFuIHN0eWxlPSAiY29sb3I6IFJlZDsiPkNvbnRleHRvPC9zcGFuPgpFbCBwYXF1ZXRlICoqbnljZmxpZ2h0czEzKiogY29udGllbmUgaW5mcm9tYWNpw7NuIHNvYnJlIHRvZG9zIGxvcyB2dWVsb3MgcXVlIHBhcnRpZXJvbiBkZXNkZSBOdWV2YSBZb3JrIChFV1IsIEpGSyB5IExHQSkgYSBkZXN0aW5vcyBlbiBsb3MgRXN0YWRvcyBVbmlkb3MuIEZ1ZXJvbiAzMzYsNzc2IHZ1ZWxvcyBlbiB0b3RhbC4gUGFyYSBheXVkYXIgYSBjb21wb3JlbmRlciBsYXMgY2F1c2FzIGRlIGxvcyByZXN0cmFzb3MsIHRhbWJpZW4gaW5jbHV5ZSBvdHJvcyBjb25qdW50b3MgZGUgZGF0b3Mgw7p0aWxlcy4gIAoKRXN0ZSBwYXF1ZXRlIGluY2x1eWUgbGFzIHNpZ3VpZW50ZXMgdGFibGFzOiAgCgorIGZsaWdodHMgPSB0b2RvcyBsb3MgdnVlbG9zIHF1ZSBzYWxpZXJvbiBkZSBOdWV2YSBZb3JrIGVuIDIwMTMqICAKKyB3ZWF0aGVyID0gZGF0b3MgbWV0ZXJlb2zDs2dpY29zIHBvciBob3JhIGRlIGNhZGEgYWVyb3B1ZXJ0byAgCisgcGxhbmVzID0gaW5mb3JtYWNpw7NuIGRlIGNvbnRydWNjaW9uIGRlIGNhZGEgYXZpw7NuLiAgCisgYWlycG9ydHMgPSBub21icmVzIHkgdWJpY2FjaW9uZXMgZGUgYWVyb3B1ZXJ0b3MuICAKKyBhaXJsaW5lcyA9IHJlbGFjacOzbiBlbnRyZSBub21icmVzIHkgY8OzZGlnb3MgZGUgbGFzIGFlcm9sw61uZWFzCgpmdWVudGU6IApbT3JpZ2VuIGRlIGRhdG9zXShodHRwczovL2NyYW4uci1wcm9qZWN0Lm9yZy93ZWIvcGFja2FnZXMvbnljZmxpZ2h0czEzL255Y2ZsaWdodHMxMy5wZGYpCgojIDxzcGFuIHN0eWxlPSAiY29sb3I6IG9yYW5nZTsiPkluc3RhbGFyIFBhcXVldGVzIHkgbGxhbWFyIGxpYnJlcmlhczwvc3Bhbj4KYGBge3J9CiMgaW5zdGFsbC5wYWNrYWdlcygibnljZmxpZ2h0czEzIikKbGlicmFyeShueWNmbGlnaHRzMTMpCiMgaW5zdGFsbC5wYWNrYWdlcygidGlkeXZlcnNlIikKbGlicmFyeSh0aWR5dmVyc2UpCmBgYAoKCiMgPHNwYW4gc3R5bGU9ICJjb2xvcjogR3JlZW47Ij5HdWFyZGFyIGxhcyBiYXNlcyBkZSBkYXRvczwvc3Bhbj4KYGBge3J9CmZsaWdodHMgPC0gZmxpZ2h0cwp3ZWF0aGVyIDwtIHdlYXRoZXIKcGxhbmVzIDwtIHBsYW5lcwphaXJwb3J0cyA8LSBhaXJwb3J0cwphaXJsaW5lcyA8LSBhaXJsaW5lcyAKYGBgCgojIDxzcGFuIHN0eWxlPSAiY29sb3I6IHBpbms7Ij5SZWxhY2nDs24gZW50cmUgbGFzIGJhc2VzIGRlIGRhdG9zIDwvc3Bhbj4KIVtdKC9Vc2Vycy9qb3Jwb25zL0Rlc2t0b3AvcmVsYXRpb25hbC1ueWNmbGlnaHRzLnBuZykKCiMgPHNwYW4gc3R5bGU9ICJjb2xvcjogQmx1ZTsiPkZ1bmNpb25lcyBCw6FzaWNhcyBkZSBNYW5lam8gZGUgRGF0b3MgPC9zcGFuPgoKIyMgPHNwYW4gc3R5bGU9ICJjb2xvcjogQmx1ZTsiPlNlbGVjdCA8L3NwYW4+CkxhIGZ1bmNpw7NuICpzZWxlY3QqIHNpcnZlIHBhcmEgc2VsZWNjaW9uYXIgY29sdW1uYXMgZGUgdW5hIHRhYmxhICgqZGF0YSBmcmFtZSopLgpgYGB7cn0KZGYxIDwtIGZsaWdodHMgJT4lIHNlbGVjdChjYXJyaWVyLCBmbGlnaHQpICNzZWxlY2Npb25hciB1bmFzIGNvbHVtbmFzIGVuIGVzcGVjaWZpY28KZGYyIDwtIGZsaWdodHMgJT4lIHNlbGVjdChjYXJyaWVyOmRpc3RhbmNlKSAjc2VsZWNjaW9uYXIgZGUgdW5hIGNvbHVtYW4gYSB1bmEgY29sdW1uYQpkZjMgPC0gZmxpZ2h0cyAlPiUgc2VsZWN0KC1jYXJyaWVyLCAtZmxpZ2h0KSAjc2VsZWNjaW9uYXIgdG9kbyBtZW5vcyBlc2FzIGNvbHVtbmFzIApkZjQgPC0gZmxpZ2h0cyAlPiUgc2VsZWN0KC1jYXJyaWVyOi1kaXN0YW5jZSkgI3RvZGFzIGxhcyBjb2x1bW5hcyBtZW5vcyBsYXMgcXVlIGVzdGFuIGVudHJlIGNhcnJpZXIgeSBkaXN0YW5jZSBpbmNsdXllbmRvIGVzdGFzIDIKZGY1IDwtIGZsaWdodHMgJT4lIHNlbGVjdChhZXJvbGluZWEgPSBjYXJyaWVyKSAjbm9tYnJhciB1bmEgdmFyaWFibGUgbyBjYW1iaWFyIGVsIGlkaW9tYQpkZjYgPC0gZmxpZ2h0cyAlPiUgcmVuYW1lKGFlcm9saW5lYSA9IGNhcnJpZXIgKSAjcG9uZXJsZSBub21icmUgYSB1bmEgdmFyaWFibGUgCmBgYAoKIyMgPHNwYW4gc3R5bGU9ICJjb2xvcjogQmx1ZTsiPlNlbGVjdCA8L3NwYW4+CkxhIGZ1bmNpw7NuICpmaWx0ZXIqIHNpcnZlIHBhcmEgc2VsZWNjaW9uYXIgcmVuZ2xvbnJlcyBkZSB1bmEgdGFibGEgKCpkYXRhIGZyYW1lKikKYGBge3J9CmRmNyA8LSBmbGlnaHRzICU+JSBmaWx0ZXIoZGVwX2RlbGF5ID49NTAwKSAjc2VsZWNjaW9uYXIgcmVuZ2xvbmVzIHF1ZSBzZWFuIG1heW9yIG8gaWd1YWwgYSB1bmEgY2FudGlkYWQgKHF1ZSBjdW1wbGFuIGxhIGNvbmRpY2lvbikKIyBDb25kaWNpb25lczogSWd1YWwgPT0sIERlc2lndWFsID0hPSwgTWF5b3IgcXVlID4sIE1heW9yIG8gaWd1YWwgcXVlID49LCBNbmVvciBxdWUgPCwgTWVub3IgbyBpZ3VhbCBxdWUgPD0KIyBPcGVyYWRvcmVzIGxvZ2lzdGljb3M6IEFORCAmLCBPUiB8LCBOT1QgISAKZGY4IDwtIGZsaWdodHMgJT4lIGZpbHRlcihkZXBfZGVsYXkgPj0gNTAwLCBkZXBfZGVsYXkgPDYwMCkgI3NlbGVjY2lvbmFyIHJlbmdsb25lcyBxdWUgZXN0ZW4gZW50cmUgdW5hIGNhbnRpZGFkIGRlIGRhdG9zIApkZjkgPC0gZmxpZ2h0cyAlPiUgc2xpY2UoMTAwMDoxMDk5KSAjc2VsZWNjaW9uYXIgc29sbyByZW5nbG9uZXMgZW4gZXNlIHJhbmdvICh1biByZWNvcnRlIGRlIHRhYmxhIGVuIGVzb3MgcmVuZ2xvbmVzKQpgYGAKIyMgPHNwYW4gc3R5bGU9ICJjb2xvcjogQmx1ZTsiPkRpc3RpbmN0IDwvc3Bhbj4KTGEgZnVuY2nDs24gKmRpc3RpbmN0KiBzaXJ2ZSBwYXJhIGVsaW1pbmFyIHJlbmdsb25lcyBkdXBsaWNhZG9zLgpgYGB7cn0KZGYxMCA8LSBkaXN0aW5jdChmbGlnaHRzKSAjRGVqYXIgc29sbyBsb3MgcmVuZ2xvbmVzIGRpZmVyZW50ZXMsIGJvcnJhIHRvZG9zIGxvcyByZXBlcnRpZG9zIApgYGAKIyMgPHNwYW4gc3R5bGU9ICJjb2xvcjogQmx1ZTsiPk1lcmdlIDwvc3Bhbj4KTGEgZnVuY2nDs24gKm1lcmdlKiBzaXJ2ZSBwYXJhIGp1bnRhciBiYXNlcyBkZSBkYXRvcwpgYGB7cn0KYmRncmFuZGUgPC0gbWVyZ2UoZmxpZ2h0cyxhaXJsaW5lcywgYnk9ImNhcnJpZXIiKQpiZGdyYW5kZTIgPC0gbWVyZ2UoYmRncmFuZGUscGxhbmVzLCBieT0idGFpbG51bSIpCmBgYAojIyA8c3BhbiBzdHlsZT0gImNvbG9yOiBCbHVlOyI+IE11dGF0ZSA8L3NwYW4+CmBgYHtyfQpiZGdyYW5kZTMgPC0gbXV0YXRlKGJkZ3JhbmRlMiwgZGlzdF9tdHMgPSBkaXN0YW5jZSoxLjYwOSkgIyBBZ3JlZ2EgdmFyaWFibGVzIG51ZXZhcyBjYWxjdWxhZGFzIGEgcGFydGlyIGRlIHZhcmlibGVzIGF4aXN0ZW50ZXMgZW4gbGEgYmFzZSBkZSBkYXRvcwpgYGAKCiMjRWplcmNpY2lvcwoxLiBFbmN1ZW50cmEgdG9kb3MgbG9zIHZ1ZWxvcyBxdWUgdHV2aWVyb24gdW4gYXRyYXNvIGRlIDIgaHJzIG8gbcOhcy4KYGBge3J9CmVqZXJjaWNpbzEgPC0gYmRncmFuZGUyICU+JSBmaWx0ZXIoYXJyX2RlbGF5Pj0xMjApCmBgYAoKMi4gRW5jdWVudHJhIHRvZG9zIGxvcyB2dWVsb3MgcXVlIGxsZWdhcm9uIGEgSG91c3RvbiAKYGBge3J9CmVqZXJjaWNpbzIgPC0gYmRncmFuZGUyICU+JSBmaWx0ZXIoZGVzdCA9PSJJQUgiIHwgZGVzdCA9PSAiSE9VIikKYGBgCjMuIEVuY3VlbnRyYSB0b2RvcyBsb3MgdnVlbG9zIG9wZXJhZG9zIHBvciBVbml0ZWQsIEFtZXJpY2FuIG8gRGVsdGEKYGBge3J9CmVqZXJjaWNpbzMgPC0gYmRncmFuZGUyICU+JSBmaWx0ZXIoY2FycmllciAlaW4lIGMoIlVBIiwiQUEiLCAiREwiKSkKYGBgCjQuIEVqZXJjaWNpbyA0LiBFbmN1ZW50cmEgdG9kb3MgbG9zIHZ1ZWxvcyBxdWUgZGVzcGVnYXJvbiBlbiBKdWxpbywgQWdvc3RvIG8gU2VwdGllbWJyZS4KYGBge3J9CmVqZXJjaWNpbzQgPC0gYmRncmFuZGUyICU+JSBmaWx0ZXIoIG1vbnRoID09IDcgfCBtb250aCA9PSA4IHwgbW9udGggPT0gOSkKCmVqZXJjaWNpbzRhIDwtIGJkZ3JhbmRlMiAlPiUgZmlsdGVyIChtb250aCAlaW4lIGMoNzo5KSkKYGBgCkVqZXJjaWNpbyA1LiBFbmN1ZW50cmEgdG9kb3MgbG9zIHZ1ZWxvcyBxdWUgYXJyaXZhcm9uIG3DoXMgZGUgMiBob3JhcyB0YXJkZSwgcGVybyBubyBkZXNwZWdhcm9uIHRhcmRlLgpgYGB7cn0KZWplcmNpY2lvNSA8LSBiZGdyYW5kZTIgJT4lIGZpbHRlcihhcnJfZGVsYXk+IDEyMCAmIGRlcF90aW1lID09IHNjaGVkX2RlcF90aW1lKQoKZWplcmNpY2lvNWIgIDwtIGJkZ3JhbmRlMiAlPiUgZmlsdGVyKGFycl9kZWxheT4gMTIwICYgZGVwX2RlbGF5IDw9MCkKYGBgCkVqZXJjaWNpbyA2LiBFbmN1ZW50cmEgdG9kb3MgbG9zIHZ1ZWxvcyBxdWUgc2UgcmV0cmFzYXJvbiBhbCBtZW5vcyAxIGhvcmEsIHBlcm8gcXVlIGxsZWdhcm9uIGFudGVzIDMwIG1pbnV0b3MgbyBtw6FzLgpgYGB7cn0KZWplcmNpY2lvNiA8LSBiZGdyYW5kZTIgJT4lIGZpbHRlcihkZXBfZGVsYXkgPj02MCAmIGFycl9kZWxheTw9LTMwKQpgYGAKRWplcmNpY2lvIDcuIEVuY3VlbnRyYSB0b2RvcyBsb3MgdnVlbG9zIHF1ZSBzYWxpZXJvbiBlbnRyZSBsYSBtZWRpYW5vY2hlIHkgbGFzIDYgYS5tLiAKYGBge3J9CmVqZXJjaWNpbzcgPC0gYmRncmFuZGUyICU+JSBmaWx0ZXIoZGVwX3RpbWU9PTI0MDAgfCBkZXBfdGltZTw9NjAwKQpgYGAKCiMjIDxzcGFuIHN0eWxlPSAiY29sb3I6IEJsdWU7Ij5BcnJhbmdlIDwvc3Bhbj4KU2ltaWxhciBhIGZpbHRlcigpIHBlcm8gZW4gbHVnYXIgZGUgc2VsZWNjaW9uYXIgcmVuZ2xvbmVzLCBsb3Mgb3JkZW5hIGRlIG1lbm9yIGEgbWF5b3IuCmBgYHtyfQpkZjExIDwtIGFycmFuZ2UoYmRncmFuZGUyLHllYXIueCxtb250aCxkYXkpCmBgYApQYXJhIGFjb21vZGFyIGRlIG1heW9yIGEgbWVub3IKYGBge3J9CmRmMTIgPC0gYXJyYW5nZShiZGdyYW5kZTIseWVhci54LGRlc2MobW9udGgpLGRheSkKYGBgCgojIyA8c3BhbiBzdHlsZT0gImNvbG9yOiBCbHVlOyI+U3VtbWFyaXplIDwvc3Bhbj4KQ29sYXBzYSB1bmEgdGFibGEgYSB1biBzb2xvIHJlbmdsw7NuLgpgYGB7cn0KIyBPYnRlbiBlbCByZXRyYXNvIHByb21lZGlvIGRlIGRlc3BlZ3VlIGRlIHRvb3MgbG9zIHZ1ZWxvcyAKc3VtbWFyaXplKGJkZ3JhbmRlMiwgbWVhbihkZXBfZGVsYXksIG5hLnJtPVRSVUUpKQpgYGAKIyMgPHNwYW4gc3R5bGU9ICJjb2xvcjogQmx1ZTsiPkdyb3VwIGJ5IDwvc3Bhbj4KQWdydXBhIHRhYmxhIGJhc2FkYSBlbiBhbGd1bmFzIGNvbHVtbmFzLgpgYGB7cn0KI09idGVuZXIgZWwgcmVydHJhc28gcHJvbWVkaW8gZGUgZGVzcGVndWUgcG9yIGRpYQpwb3JfZGlhIDwtIGdyb3VwX2J5KGJkZ3JhbmRlMiwgeWVhci54LG1vbnRoLGRheSkKc3VtbWFyaXplKHBvcl9kaWEsIG1lYW4oZGVwX2RlbGF5LCBuYS5ybT1UUlVFKSkKYGBgCgo=