#Library

pacman::p_load(dplyr)

#Question 1

pacman::p_load(nycflights13)

# Both View and Glimpse gave me error codes when I attempted to knit, but ran in my markdown

# this View() function opens lets you directly view the whole dataset

# this glimpse() function provides a quick overview of the dataset

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  
##  1st Qu.: 8.00   1st Qu.:2013-04-04 13:00:00  
##  Median :29.00   Median :2013-07-03 10:00:00  
##  Mean   :26.23   Mean   :2013-07-03 05:22:54  
##  3rd Qu.:44.00   3rd Qu.:2013-10-01 07:00:00  
##  Max.   :59.00   Max.   :2013-12-31 23:00:00  
## 

#Question 2

#Option A - Correct
maxdep <- max(flights$dep_delay, na.rm=TRUE)

maxdep_id <- which(flights$dep_delay==maxdep)

flights[maxdep_id, 10:12]
## # A tibble: 1 × 3
##   carrier flight tailnum
##   <chr>    <int> <chr>  
## 1 HA          51 N384HA
#Option B - Correct
sortif <- arrange(flights,desc(dep_delay)) 

select(sortif, carrier, flight, tailnum, everything())
## # A tibble: 336,776 × 19
##    carrier flight tailnum  year month   day dep_time sched_dep_time dep_delay
##    <chr>    <int> <chr>   <int> <int> <int>    <int>          <int>     <dbl>
##  1 HA          51 N384HA   2013     1     9      641            900      1301
##  2 MQ        3535 N504MQ   2013     6    15     1432           1935      1137
##  3 MQ        3695 N517MQ   2013     1    10     1121           1635      1126
##  4 AA         177 N338AA   2013     9    20     1139           1845      1014
##  5 MQ        3075 N665MQ   2013     7    22      845           1600      1005
##  6 DL        2391 N959DL   2013     4    10     1100           1900       960
##  7 DL        2119 N927DA   2013     3    17     2321            810       911
##  8 DL        2007 N3762Y   2013     6    27      959           1900       899
##  9 DL        2047 N6716C   2013     7    22     2257            759       898
## 10 AA         172 N5DMAA   2013    12     5      756           1700       896
## # ℹ 336,766 more rows
## # ℹ 10 more variables: arr_time <int>, sched_arr_time <int>, arr_delay <dbl>,
## #   origin <chr>, dest <chr>, air_time <dbl>, distance <dbl>, hour <dbl>,
## #   minute <dbl>, time_hour <dttm>
#Option C - Incorrect
select(flights, starts_with("dep"))
## # A tibble: 336,776 × 2
##    dep_time dep_delay
##       <int>     <dbl>
##  1      517         2
##  2      533         4
##  3      542         2
##  4      544        -1
##  5      554        -6
##  6      554        -4
##  7      555        -5
##  8      557        -3
##  9      557        -3
## 10      558        -2
## # ℹ 336,766 more rows
#Option D - Incorrect
summarise(flights, delay=mean(dep_delay,na.rm=TRUE))
## # A tibble: 1 × 1
##   delay
##   <dbl>
## 1  12.6

#Question 3

#Option B - Correct
not_cancelled <- flights %>% 

 filter(!is.na(dep_delay))



not_cancelled %>% 

 group_by(year, month, day) %>% 

 summarise(mean = mean(dep_delay))
## `summarise()` has grouped output by 'year', 'month'. You can override using the
## `.groups` argument.
## # A tibble: 365 × 4
## # Groups:   year, month [12]
##     year month   day  mean
##    <int> <int> <int> <dbl>
##  1  2013     1     1 11.5 
##  2  2013     1     2 13.9 
##  3  2013     1     3 11.0 
##  4  2013     1     4  8.95
##  5  2013     1     5  5.73
##  6  2013     1     6  7.15
##  7  2013     1     7  5.42
##  8  2013     1     8  2.55
##  9  2013     1     9  2.28
## 10  2013     1    10  2.84
## # ℹ 355 more rows
#Option D - Correct
flights %>% 

 group_by(year, month, day) %>% 

 summarise(mean = mean(dep_delay, na.rm = TRUE))
## `summarise()` has grouped output by 'year', 'month'. You can override using the
## `.groups` argument.
## # A tibble: 365 × 4
## # Groups:   year, month [12]
##     year month   day  mean
##    <int> <int> <int> <dbl>
##  1  2013     1     1 11.5 
##  2  2013     1     2 13.9 
##  3  2013     1     3 11.0 
##  4  2013     1     4  8.95
##  5  2013     1     5  5.73
##  6  2013     1     6  7.15
##  7  2013     1     7  5.42
##  8  2013     1     8  2.55
##  9  2013     1     9  2.28
## 10  2013     1    10  2.84
## # ℹ 355 more rows
#Option C - Incorrect
not_cancelled_1 <- flights %>% 

 filter(!is.na(dep_delay), !is.na(arr_delay))
#Option A - Incorrect
delays <- not_cancelled %>% 

 group_by(tailnum) %>% 

 summarise(

  delay = mean(arr_delay)

 )

#Question 4

#Part 1
not_cancelled_q4 <- flights %>% 
  filter(!is.na(arr_delay))

avg_arr_delay_by_tail_num <- not_cancelled_q4 %>% 
      group_by(tailnum) %>%
      summarize(avg_arr_delay = mean(arr_delay, na.rm = TRUE))
#Part 2
lowest_delay <- 
  avg_arr_delay_by_tail_num %>% filter(avg_arr_delay == min(avg_arr_delay, na.rm = TRUE))
lowest_delay
## # A tibble: 1 × 2
##   tailnum avg_arr_delay
##   <chr>           <dbl>
## 1 N560AS            -53

#Question 5

#By using the following code, you are able to get the first and last flights departure time: The wording of this question is confusing me. I know that the last flight stops at 24:00, but does that mean it left the next day or the day in question? If it counts 2400 as the same day then the answer is true, but if it doesn't then the answer is false. 



not_cancelled %>% 

 group_by(year, month, day) %>% 

 summarise(

  first = min(dep_time),

  last = max(dep_time)

 ) %>% arrange(desc(last))
## `summarise()` has grouped output by 'year', 'month'. You can override using the
## `.groups` argument.
## # A tibble: 365 × 5
## # Groups:   year, month [12]
##     year month   day first  last
##    <int> <int> <int> <int> <int>
##  1  2013     2     7    27  2400
##  2  2013     2    11     1  2400
##  3  2013     3    15    11  2400
##  4  2013     3    22    37  2400
##  5  2013     3    25    13  2400
##  6  2013     4     2     9  2400
##  7  2013     4     4    14  2400
##  8  2013     4    20     7  2400
##  9  2013     5    21   110  2400
## 10  2013     6    17     2  2400
## # ℹ 355 more rows

#Question 6

flights %>% 
    group_by(month) %>%
    summarise(
      total_flights = n(),
      delayed_over_hour = sum(dep_delay > 60, na.rm = TRUE),
      proportion = delayed_over_hour/total_flights
      )
## # A tibble: 12 × 4
##    month total_flights delayed_over_hour proportion
##    <int>         <int>             <int>      <dbl>
##  1     1         27004              1821     0.0674
##  2     2         24951              1654     0.0663
##  3     3         28834              2340     0.0812
##  4     4         28330              2535     0.0895
##  5     5         28796              2309     0.0802
##  6     6         28243              3494     0.124 
##  7     7         29425              3820     0.130 
##  8     8         29327              2295     0.0783
##  9     9         27574              1330     0.0482
## 10    10         28889              1344     0.0465
## 11    11         27268              1086     0.0398
## 12    12         28135              2553     0.0907

#Question 7

flights %>%
  group_by(dest) %>%
  summarise(num_carriers = n_distinct(carrier)) %>%
  arrange(desc(num_carriers))
## # A tibble: 105 × 2
##    dest  num_carriers
##    <chr>        <int>
##  1 ATL              7
##  2 BOS              7
##  3 CLT              7
##  4 ORD              7
##  5 TPA              7
##  6 AUS              6
##  7 DCA              6
##  8 DTW              6
##  9 IAD              6
## 10 MSP              6
## # ℹ 95 more rows

#Question 9

delays <- flights %>% 

 group_by(dest) %>% 

 summarise(

  count = n(),

  dist = mean(distance, na.rm = TRUE),

  delay = mean(arr_delay, na.rm = TRUE)

 ) %>% 

 filter(count > 20, dest != "HNL")