class: center, middle, inverse, title-slide .title[ # Data Wrangling ] .subtitle[ ## using tidyverse ] .author[ ### Allan R. Lao, MBA, DIT ] .date[ ### Department of ICT 2023-09-30 ] --- # The hflights Dataset Includes data on all flights that departed **Houston, TX in 2011** ```r str(hflights) ``` ``` ## 'data.frame': 227496 obs. of 21 variables: ## $ Year : int 2011 2011 2011 2011 2011 2011 2011 2011 2011 2011 ... ## $ Month : int 1 1 1 1 1 1 1 1 1 1 ... ## $ DayofMonth : int 1 2 3 4 5 6 7 8 9 10 ... ## $ DayOfWeek : int 6 7 1 2 3 4 5 6 7 1 ... ## $ DepTime : int 1400 1401 1352 1403 1405 1359 1359 1355 1443 1443 ... ## $ ArrTime : int 1500 1501 1502 1513 1507 1503 1509 1454 1554 1553 ... ## $ UniqueCarrier : chr "AA" "AA" "AA" "AA" ... ## $ FlightNum : int 428 428 428 428 428 428 428 428 428 428 ... ## $ TailNum : chr "N576AA" "N557AA" "N541AA" "N403AA" ... ## $ ActualElapsedTime: int 60 60 70 70 62 64 70 59 71 70 ... ## $ AirTime : int 40 45 48 39 44 45 43 40 41 45 ... ## $ ArrDelay : int -10 -9 -8 3 -3 -7 -1 -16 44 43 ... ## $ DepDelay : int 0 1 -8 3 5 -1 -1 -5 43 43 ... ## $ Origin : chr "IAH" "IAH" "IAH" "IAH" ... ## $ Dest : chr "DFW" "DFW" "DFW" "DFW" ... ## $ Distance : int 224 224 224 224 224 224 224 224 224 224 ... ## $ TaxiIn : int 7 6 5 9 9 6 12 7 8 6 ... ## $ TaxiOut : int 13 9 17 22 9 13 15 12 22 19 ... ## $ Cancelled : int 0 0 0 0 0 0 0 0 0 0 ... ## $ CancellationCode : chr "" "" "" "" ... ## $ Diverted : int 0 0 0 0 0 0 0 0 0 0 ... ``` --- # The hflights Dataset ```r knitr::kable( head(hflights, 10),format = 'html' ) ``` <table> <thead> <tr> <th style="text-align:left;"> </th> <th style="text-align:right;"> Year </th> <th style="text-align:right;"> Month </th> <th style="text-align:right;"> DayofMonth </th> <th style="text-align:right;"> DayOfWeek </th> <th style="text-align:right;"> DepTime </th> <th style="text-align:right;"> ArrTime </th> <th style="text-align:left;"> UniqueCarrier </th> <th style="text-align:right;"> FlightNum </th> <th style="text-align:left;"> TailNum </th> <th style="text-align:right;"> ActualElapsedTime </th> <th style="text-align:right;"> AirTime </th> <th style="text-align:right;"> ArrDelay </th> <th style="text-align:right;"> DepDelay </th> <th style="text-align:left;"> Origin </th> <th style="text-align:left;"> Dest </th> <th style="text-align:right;"> Distance </th> <th style="text-align:right;"> TaxiIn </th> <th style="text-align:right;"> TaxiOut </th> <th style="text-align:right;"> Cancelled </th> <th style="text-align:left;"> CancellationCode </th> <th style="text-align:right;"> Diverted </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> 5424 </td> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 6 </td> <td style="text-align:right;"> 1400 </td> <td style="text-align:right;"> 1500 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N576AA </td> <td style="text-align:right;"> 60 </td> <td style="text-align:right;"> 40 </td> <td style="text-align:right;"> -10 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 7 </td> <td style="text-align:right;"> 13 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> </tr> <tr> <td style="text-align:left;"> 5425 </td> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 7 </td> <td style="text-align:right;"> 1401 </td> <td style="text-align:right;"> 1501 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N557AA </td> <td style="text-align:right;"> 60 </td> <td style="text-align:right;"> 45 </td> <td style="text-align:right;"> -9 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 6 </td> <td style="text-align:right;"> 9 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> </tr> <tr> <td style="text-align:left;"> 5426 </td> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 1352 </td> <td style="text-align:right;"> 1502 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N541AA </td> <td style="text-align:right;"> 70 </td> <td style="text-align:right;"> 48 </td> <td style="text-align:right;"> -8 </td> <td style="text-align:right;"> -8 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 5 </td> <td style="text-align:right;"> 17 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> </tr> <tr> <td style="text-align:left;"> 5427 </td> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 4 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 1403 </td> <td style="text-align:right;"> 1513 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N403AA </td> <td style="text-align:right;"> 70 </td> <td style="text-align:right;"> 39 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 9 </td> <td style="text-align:right;"> 22 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> </tr> <tr> <td style="text-align:left;"> 5428 </td> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 5 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:right;"> 1405 </td> <td style="text-align:right;"> 1507 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N492AA </td> <td style="text-align:right;"> 62 </td> <td style="text-align:right;"> 44 </td> <td style="text-align:right;"> -3 </td> <td style="text-align:right;"> 5 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 9 </td> <td style="text-align:right;"> 9 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> </tr> <tr> <td style="text-align:left;"> 5429 </td> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 6 </td> <td style="text-align:right;"> 4 </td> <td style="text-align:right;"> 1359 </td> <td style="text-align:right;"> 1503 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N262AA </td> <td style="text-align:right;"> 64 </td> <td style="text-align:right;"> 45 </td> <td style="text-align:right;"> -7 </td> <td style="text-align:right;"> -1 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 6 </td> <td style="text-align:right;"> 13 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> </tr> <tr> <td style="text-align:left;"> 5430 </td> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 7 </td> <td style="text-align:right;"> 5 </td> <td style="text-align:right;"> 1359 </td> <td style="text-align:right;"> 1509 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N493AA </td> <td style="text-align:right;"> 70 </td> <td style="text-align:right;"> 43 </td> <td style="text-align:right;"> -1 </td> <td style="text-align:right;"> -1 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 12 </td> <td style="text-align:right;"> 15 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> </tr> <tr> <td style="text-align:left;"> 5431 </td> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 8 </td> <td style="text-align:right;"> 6 </td> <td style="text-align:right;"> 1355 </td> <td style="text-align:right;"> 1454 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N477AA </td> <td style="text-align:right;"> 59 </td> <td style="text-align:right;"> 40 </td> <td style="text-align:right;"> -16 </td> <td style="text-align:right;"> -5 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 7 </td> <td style="text-align:right;"> 12 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> </tr> <tr> <td style="text-align:left;"> 5432 </td> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 9 </td> <td style="text-align:right;"> 7 </td> <td style="text-align:right;"> 1443 </td> <td style="text-align:right;"> 1554 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N476AA </td> <td style="text-align:right;"> 71 </td> <td style="text-align:right;"> 41 </td> <td style="text-align:right;"> 44 </td> <td style="text-align:right;"> 43 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 8 </td> <td style="text-align:right;"> 22 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> </tr> <tr> <td style="text-align:left;"> 5433 </td> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 10 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 1443 </td> <td style="text-align:right;"> 1553 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N504AA </td> <td style="text-align:right;"> 70 </td> <td style="text-align:right;"> 45 </td> <td style="text-align:right;"> 43 </td> <td style="text-align:right;"> 43 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 6 </td> <td style="text-align:right;"> 19 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> </tr> </tbody> </table> --- # Data Manipulation Let’s say that you want to perform the following operations on the data — 1. Filter for flights originating from IAH airport 2. Count total flights and delayed flights by each carrier 3. Convert it to a Delayed per thousand (DPH) metric 4. Sort the result by DPH in descending order ```r result <- hflights %>% filter(Origin == "IAH")%>% mutate(FDelayed = if_else(DepDelay>0,TRUE,FALSE,missing=NULL))%>% group_by(UniqueCarrier)%>% summarise(No=n(),NumDelayed=sum(FDelayed,na.rm=TRUE))%>% mutate(DPH=100*(NumDelayed/No))%>% arrange(desc(DPH)) ``` ```r head(result) ``` ``` ## # A tibble: 6 × 4 ## UniqueCarrier No NumDelayed DPH ## <chr> <int> <int> <dbl> ## 1 CO 70032 40129 57.3 ## 2 UA 2072 1018 49.1 ## 3 OO 16061 6838 42.6 ## 4 MQ 2224 890 40.0 ## 5 XE 73053 26708 36.6 ## 6 AA 3244 1178 36.3 ``` --- # Subset Variables ( columns) .pull-left[  ] .pull-right[ ```r d1 <- select(hflights, FlightNum, CarrierName = UniqueCarrier, DepDelay,ArrDelay) d2 <-select(hflights, FlightNum, CarrierName = UniqueCarrier, contains("Delay")) ``` ```r head(d1) ``` ``` ## FlightNum CarrierName DepDelay ArrDelay ## 5424 428 AA 0 -10 ## 5425 428 AA 1 -9 ## 5426 428 AA -8 -8 ## 5427 428 AA 3 3 ## 5428 428 AA 5 -3 ## 5429 428 AA -1 -7 ``` ] --- # Subset Variables ( columns) **hflights** data <table> <thead> <tr> <th style="text-align:left;"> </th> <th style="text-align:right;"> Year </th> <th style="text-align:right;"> Month </th> <th style="text-align:right;"> DayofMonth </th> <th style="text-align:right;"> DayOfWeek </th> <th style="text-align:right;"> DepTime </th> <th style="text-align:right;"> ArrTime </th> <th style="text-align:left;"> UniqueCarrier </th> <th style="text-align:right;"> FlightNum </th> <th style="text-align:left;"> TailNum </th> <th style="text-align:right;"> ActualElapsedTime </th> <th style="text-align:right;"> AirTime </th> <th style="text-align:right;"> ArrDelay </th> <th style="text-align:right;"> DepDelay </th> <th style="text-align:left;"> Origin </th> <th style="text-align:left;"> Dest </th> <th style="text-align:right;"> Distance </th> <th style="text-align:right;"> TaxiIn </th> <th style="text-align:right;"> TaxiOut </th> <th style="text-align:right;"> Cancelled </th> <th style="text-align:left;"> CancellationCode </th> <th style="text-align:right;"> Diverted </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> 5424 </td> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 6 </td> <td style="text-align:right;"> 1400 </td> <td style="text-align:right;"> 1500 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N576AA </td> <td style="text-align:right;"> 60 </td> <td style="text-align:right;"> 40 </td> <td style="text-align:right;"> -10 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 7 </td> <td style="text-align:right;"> 13 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> </tr> <tr> <td style="text-align:left;"> 5425 </td> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 7 </td> <td style="text-align:right;"> 1401 </td> <td style="text-align:right;"> 1501 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N557AA </td> <td style="text-align:right;"> 60 </td> <td style="text-align:right;"> 45 </td> <td style="text-align:right;"> -9 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 6 </td> <td style="text-align:right;"> 9 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> </tr> <tr> <td style="text-align:left;"> 5426 </td> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 1352 </td> <td style="text-align:right;"> 1502 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N541AA </td> <td style="text-align:right;"> 70 </td> <td style="text-align:right;"> 48 </td> <td style="text-align:right;"> -8 </td> <td style="text-align:right;"> -8 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 5 </td> <td style="text-align:right;"> 17 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> </tr> <tr> <td style="text-align:left;"> 5427 </td> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 4 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 1403 </td> <td style="text-align:right;"> 1513 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N403AA </td> <td style="text-align:right;"> 70 </td> <td style="text-align:right;"> 39 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 9 </td> <td style="text-align:right;"> 22 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> </tr> <tr> <td style="text-align:left;"> 5428 </td> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 5 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:right;"> 1405 </td> <td style="text-align:right;"> 1507 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N492AA </td> <td style="text-align:right;"> 62 </td> <td style="text-align:right;"> 44 </td> <td style="text-align:right;"> -3 </td> <td style="text-align:right;"> 5 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 9 </td> <td style="text-align:right;"> 9 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> </tr> </tbody> </table> Subset Data ```r d3 <- select(hflights,1:5) ``` ``` ## Year Month DayofMonth DayOfWeek DepTime ## 5424 2011 1 1 6 1400 ## 5425 2011 1 2 7 1401 ## 5426 2011 1 3 1 1352 ## 5427 2011 1 4 2 1403 ## 5428 2011 1 5 3 1405 ## 5429 2011 1 6 4 1359 ``` --- # the Pipe %>% > The pipe operator %>% is used to express a sequence of multiple operations, for example, the output of one function or expression is passed to another function as an argument. ```r d1 <- select(hflights, FlightNum, CarrierName = UniqueCarrier, DepDelay,ArrDelay) ``` ```r d1 <- hflights %>% select(FlightNum, CarrierName = UniqueCarrier, DepDelay,ArrDelay) ``` >For every column selected, it is returned with a **vector** data type --- # Subset Variables ( rows) .pull-left[  ] .pull-right[ ```r result <- hflights %>% filter(Origin == "IAH") ``` <table> <thead> <tr> <th style="text-align:right;"> Year </th> <th style="text-align:right;"> Month </th> <th style="text-align:right;"> DayofMonth </th> <th style="text-align:right;"> DayOfWeek </th> <th style="text-align:right;"> DepTime </th> <th style="text-align:right;"> ArrTime </th> <th style="text-align:left;"> UniqueCarrier </th> <th style="text-align:right;"> FlightNum </th> <th style="text-align:left;"> TailNum </th> <th style="text-align:right;"> ActualElapsedTime </th> <th style="text-align:right;"> AirTime </th> <th style="text-align:right;"> ArrDelay </th> <th style="text-align:right;"> DepDelay </th> <th style="text-align:left;"> Origin </th> <th style="text-align:left;"> Dest </th> <th style="text-align:right;"> Distance </th> <th style="text-align:right;"> TaxiIn </th> <th style="text-align:right;"> TaxiOut </th> <th style="text-align:right;"> Cancelled </th> <th style="text-align:left;"> CancellationCode </th> <th style="text-align:right;"> Diverted </th> </tr> </thead> <tbody> <tr> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 6 </td> <td style="text-align:right;"> 1400 </td> <td style="text-align:right;"> 1500 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N576AA </td> <td style="text-align:right;"> 60 </td> <td style="text-align:right;"> 40 </td> <td style="text-align:right;"> -10 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 7 </td> <td style="text-align:right;"> 13 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> </tr> <tr> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 7 </td> <td style="text-align:right;"> 1401 </td> <td style="text-align:right;"> 1501 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N557AA </td> <td style="text-align:right;"> 60 </td> <td style="text-align:right;"> 45 </td> <td style="text-align:right;"> -9 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 6 </td> <td style="text-align:right;"> 9 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> </tr> <tr> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 1352 </td> <td style="text-align:right;"> 1502 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N541AA </td> <td style="text-align:right;"> 70 </td> <td style="text-align:right;"> 48 </td> <td style="text-align:right;"> -8 </td> <td style="text-align:right;"> -8 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 5 </td> <td style="text-align:right;"> 17 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> </tr> <tr> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 4 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 1403 </td> <td style="text-align:right;"> 1513 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N403AA </td> <td style="text-align:right;"> 70 </td> <td style="text-align:right;"> 39 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 9 </td> <td style="text-align:right;"> 22 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> </tr> </tbody> </table> ] --- # Filter and Select >chaining two functions Without pipe operator ```r r1 <- filter(hflights,Origin == "IAH") result <- select(r1, FlightNum, CarrierName = UniqueCarrier, Origin) ``` Using pipe operator ```r result <- hflights %>% filter(Origin == "IAH") %>% select( FlightNum, CarrierName = UniqueCarrier, Origin) ``` <table> <thead> <tr> <th style="text-align:right;"> FlightNum </th> <th style="text-align:left;"> CarrierName </th> <th style="text-align:left;"> Origin </th> </tr> </thead> <tbody> <tr> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> AA </td> <td style="text-align:left;"> IAH </td> </tr> <tr> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> AA </td> <td style="text-align:left;"> IAH </td> </tr> <tr> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> AA </td> <td style="text-align:left;"> IAH </td> </tr> <tr> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> AA </td> <td style="text-align:left;"> IAH </td> </tr> <tr> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> AA </td> <td style="text-align:left;"> IAH </td> </tr> <tr> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> AA </td> <td style="text-align:left;"> IAH </td> </tr> <tr> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> AA </td> <td style="text-align:left;"> IAH </td> </tr> <tr> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> AA </td> <td style="text-align:left;"> IAH </td> </tr> </tbody> </table> --- # Other subset functions Get the rows in positions 1 to 10 ```r result <- slice(hflights,1:10) ``` <table> <thead> <tr> <th style="text-align:right;"> Year </th> <th style="text-align:right;"> Month </th> <th style="text-align:right;"> DayofMonth </th> <th style="text-align:right;"> DayOfWeek </th> <th style="text-align:right;"> DepTime </th> <th style="text-align:right;"> ArrTime </th> <th style="text-align:left;"> UniqueCarrier </th> <th style="text-align:right;"> FlightNum </th> <th style="text-align:left;"> TailNum </th> <th style="text-align:right;"> ActualElapsedTime </th> <th style="text-align:right;"> AirTime </th> <th style="text-align:right;"> ArrDelay </th> <th style="text-align:right;"> DepDelay </th> <th style="text-align:left;"> Origin </th> <th style="text-align:left;"> Dest </th> <th style="text-align:right;"> Distance </th> <th style="text-align:right;"> TaxiIn </th> <th style="text-align:right;"> TaxiOut </th> <th style="text-align:right;"> Cancelled </th> <th style="text-align:left;"> CancellationCode </th> <th style="text-align:right;"> Diverted </th> </tr> </thead> <tbody> <tr> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 6 </td> <td style="text-align:right;"> 1400 </td> <td style="text-align:right;"> 1500 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N576AA </td> <td style="text-align:right;"> 60 </td> <td style="text-align:right;"> 40 </td> <td style="text-align:right;"> -10 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 7 </td> <td style="text-align:right;"> 13 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> </tr> <tr> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 7 </td> <td style="text-align:right;"> 1401 </td> <td style="text-align:right;"> 1501 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N557AA </td> <td style="text-align:right;"> 60 </td> <td style="text-align:right;"> 45 </td> <td style="text-align:right;"> -9 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 6 </td> <td style="text-align:right;"> 9 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> </tr> <tr> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 1352 </td> <td style="text-align:right;"> 1502 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N541AA </td> <td style="text-align:right;"> 70 </td> <td style="text-align:right;"> 48 </td> <td style="text-align:right;"> -8 </td> <td style="text-align:right;"> -8 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 5 </td> <td style="text-align:right;"> 17 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> </tr> <tr> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 4 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 1403 </td> <td style="text-align:right;"> 1513 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N403AA </td> <td style="text-align:right;"> 70 </td> <td style="text-align:right;"> 39 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 9 </td> <td style="text-align:right;"> 22 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> </tr> <tr> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 5 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:right;"> 1405 </td> <td style="text-align:right;"> 1507 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N492AA </td> <td style="text-align:right;"> 62 </td> <td style="text-align:right;"> 44 </td> <td style="text-align:right;"> -3 </td> <td style="text-align:right;"> 5 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 9 </td> <td style="text-align:right;"> 9 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> </tr> <tr> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 6 </td> <td style="text-align:right;"> 4 </td> <td style="text-align:right;"> 1359 </td> <td style="text-align:right;"> 1503 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N262AA </td> <td style="text-align:right;"> 64 </td> <td style="text-align:right;"> 45 </td> <td style="text-align:right;"> -7 </td> <td style="text-align:right;"> -1 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 6 </td> <td style="text-align:right;"> 13 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> </tr> <tr> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 7 </td> <td style="text-align:right;"> 5 </td> <td style="text-align:right;"> 1359 </td> <td style="text-align:right;"> 1509 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N493AA </td> <td style="text-align:right;"> 70 </td> <td style="text-align:right;"> 43 </td> <td style="text-align:right;"> -1 </td> <td style="text-align:right;"> -1 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 12 </td> <td style="text-align:right;"> 15 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> </tr> <tr> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 8 </td> <td style="text-align:right;"> 6 </td> <td style="text-align:right;"> 1355 </td> <td style="text-align:right;"> 1454 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N477AA </td> <td style="text-align:right;"> 59 </td> <td style="text-align:right;"> 40 </td> <td style="text-align:right;"> -16 </td> <td style="text-align:right;"> -5 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 7 </td> <td style="text-align:right;"> 12 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> </tr> </tbody> </table> ```r result1 <- slice(hflights,1:10) result2 <- slice(hflights, -1, -10) ``` >Quicktip : Use negative numbers to “exclude” rows. Example: To exclude the first 10 rows, and keep the remaining rows in the dataset. --- # Other subset functions ```r result <- hflights %>% mutate(totalTaxing = TaxiIn+TaxiOut) ``` <table> <thead> <tr> <th style="text-align:left;"> </th> <th style="text-align:right;"> Year </th> <th style="text-align:right;"> Month </th> <th style="text-align:right;"> DayofMonth </th> <th style="text-align:right;"> DayOfWeek </th> <th style="text-align:right;"> DepTime </th> <th style="text-align:right;"> ArrTime </th> <th style="text-align:left;"> UniqueCarrier </th> <th style="text-align:right;"> FlightNum </th> <th style="text-align:left;"> TailNum </th> <th style="text-align:right;"> ActualElapsedTime </th> <th style="text-align:right;"> AirTime </th> <th style="text-align:right;"> ArrDelay </th> <th style="text-align:right;"> DepDelay </th> <th style="text-align:left;"> Origin </th> <th style="text-align:left;"> Dest </th> <th style="text-align:right;"> Distance </th> <th style="text-align:right;"> TaxiIn </th> <th style="text-align:right;"> TaxiOut </th> <th style="text-align:right;"> Cancelled </th> <th style="text-align:left;"> CancellationCode </th> <th style="text-align:right;"> Diverted </th> <th style="text-align:right;"> totalTaxing </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> 5424 </td> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 6 </td> <td style="text-align:right;"> 1400 </td> <td style="text-align:right;"> 1500 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N576AA </td> <td style="text-align:right;"> 60 </td> <td style="text-align:right;"> 40 </td> <td style="text-align:right;"> -10 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 7 </td> <td style="text-align:right;"> 13 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> <td style="text-align:right;"> 20 </td> </tr> <tr> <td style="text-align:left;"> 5425 </td> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 7 </td> <td style="text-align:right;"> 1401 </td> <td style="text-align:right;"> 1501 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N557AA </td> <td style="text-align:right;"> 60 </td> <td style="text-align:right;"> 45 </td> <td style="text-align:right;"> -9 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 6 </td> <td style="text-align:right;"> 9 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> <td style="text-align:right;"> 15 </td> </tr> <tr> <td style="text-align:left;"> 5426 </td> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 1352 </td> <td style="text-align:right;"> 1502 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N541AA </td> <td style="text-align:right;"> 70 </td> <td style="text-align:right;"> 48 </td> <td style="text-align:right;"> -8 </td> <td style="text-align:right;"> -8 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 5 </td> <td style="text-align:right;"> 17 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> <td style="text-align:right;"> 22 </td> </tr> <tr> <td style="text-align:left;"> 5427 </td> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 4 </td> <td style="text-align:right;"> 2 </td> <td style="text-align:right;"> 1403 </td> <td style="text-align:right;"> 1513 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N403AA </td> <td style="text-align:right;"> 70 </td> <td style="text-align:right;"> 39 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 9 </td> <td style="text-align:right;"> 22 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> <td style="text-align:right;"> 31 </td> </tr> <tr> <td style="text-align:left;"> 5428 </td> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 5 </td> <td style="text-align:right;"> 3 </td> <td style="text-align:right;"> 1405 </td> <td style="text-align:right;"> 1507 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N492AA </td> <td style="text-align:right;"> 62 </td> <td style="text-align:right;"> 44 </td> <td style="text-align:right;"> -3 </td> <td style="text-align:right;"> 5 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 9 </td> <td style="text-align:right;"> 9 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> <td style="text-align:right;"> 18 </td> </tr> <tr> <td style="text-align:left;"> 5429 </td> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 6 </td> <td style="text-align:right;"> 4 </td> <td style="text-align:right;"> 1359 </td> <td style="text-align:right;"> 1503 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N262AA </td> <td style="text-align:right;"> 64 </td> <td style="text-align:right;"> 45 </td> <td style="text-align:right;"> -7 </td> <td style="text-align:right;"> -1 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 6 </td> <td style="text-align:right;"> 13 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> <td style="text-align:right;"> 19 </td> </tr> <tr> <td style="text-align:left;"> 5430 </td> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 7 </td> <td style="text-align:right;"> 5 </td> <td style="text-align:right;"> 1359 </td> <td style="text-align:right;"> 1509 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N493AA </td> <td style="text-align:right;"> 70 </td> <td style="text-align:right;"> 43 </td> <td style="text-align:right;"> -1 </td> <td style="text-align:right;"> -1 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 12 </td> <td style="text-align:right;"> 15 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> <td style="text-align:right;"> 27 </td> </tr> <tr> <td style="text-align:left;"> 5431 </td> <td style="text-align:right;"> 2011 </td> <td style="text-align:right;"> 1 </td> <td style="text-align:right;"> 8 </td> <td style="text-align:right;"> 6 </td> <td style="text-align:right;"> 1355 </td> <td style="text-align:right;"> 1454 </td> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 428 </td> <td style="text-align:left;"> N477AA </td> <td style="text-align:right;"> 59 </td> <td style="text-align:right;"> 40 </td> <td style="text-align:right;"> -16 </td> <td style="text-align:right;"> -5 </td> <td style="text-align:left;"> IAH </td> <td style="text-align:left;"> DFW </td> <td style="text-align:right;"> 224 </td> <td style="text-align:right;"> 7 </td> <td style="text-align:right;"> 12 </td> <td style="text-align:right;"> 0 </td> <td style="text-align:left;"> </td> <td style="text-align:right;"> 0 </td> <td style="text-align:right;"> 19 </td> </tr> </tbody> </table> --- # Simple aggregation .pull-left[  ] .pull-right[  ```r result <- hflights %>% group_by(UniqueCarrier)%>% summarise(TotalFlights=n()) ``` <table> <thead> <tr> <th style="text-align:left;"> UniqueCarrier </th> <th style="text-align:right;"> TotalFlights </th> </tr> </thead> <tbody> <tr> <td style="text-align:left;"> AA </td> <td style="text-align:right;"> 3244 </td> </tr> <tr> <td style="text-align:left;"> AS </td> <td style="text-align:right;"> 365 </td> </tr> <tr> <td style="text-align:left;"> B6 </td> <td style="text-align:right;"> 695 </td> </tr> <tr> <td style="text-align:left;"> CO </td> <td style="text-align:right;"> 70032 </td> </tr> <tr> <td style="text-align:left;"> DL </td> <td style="text-align:right;"> 2641 </td> </tr> <tr> <td style="text-align:left;"> EV </td> <td style="text-align:right;"> 2204 </td> </tr> <tr> <td style="text-align:left;"> F9 </td> <td style="text-align:right;"> 838 </td> </tr> <tr> <td style="text-align:left;"> FL </td> <td style="text-align:right;"> 2139 </td> </tr> </tbody> </table> ] --- # Summarize data ```r result <- hflights %>% group_by(UniqueCarrier)%>% summarise(TotalFlights=n()) ``` |UniqueCarrier | TotalFlights| |:-------------|------------:| |AA | 3244| |AS | 365| |B6 | 695| |CO | 70032| |DL | 2641| |EV | 2204| |F9 | 838| |FL | 2139| |MQ | 4648| |OO | 16061| |UA | 2072| |US | 4082| |WN | 45343| |XE | 73053| |YV | 79| --- # Summarize data ```r result <- hflights %>% summarise(TotalFlights=n()) ``` | TotalFlights| |------------:| | 227496| --- class: inverse, center, middle #Hands On Activties