Q1:

#install.packages("dplyr")
#install.packages("pacman")
pacman::p_load(nycflights13)
View(flights) # this View() function opens lets you directly view the whole dataset
glimpse(flights) # this glimpse() function provides a quick overview of the dataset
summary(flights)

Q2:

select(flights, starts_with("dep"))
sortf <- arrange(flights,desc(dep_delay)) 
select(sortf, carrier, flight, tailnum, everything())
summarise(flights, delay=mean(dep_delay,na.rm=TRUE))
maxdep <- max(flights$dep_delay, na.rm=TRUE)
maxdep_id <- which(flights$dep_delay==maxdep)
flights[maxdep_id, 10:12]

Q3:

not_cancelled <- flights %>% 
 filter(!is.na(dep_delay), !is.na(arr_delay))

not_cancelled
delays <- not_cancelled %>% 
 group_by(tailnum) %>% 
 summarise(
  delay = mean(arr_delay)
 )

delays
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.
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.

Q4:

library(dplyr)
library(nycflights13)

avg_arrival_delay <- flights %>%
  filter(!is.na(arr_delay)) %>%               
  group_by(tailnum) %>%                       
  summarise(avg_delay = mean(arr_delay, na.rm = TRUE), .groups = 'drop') 

str(avg_arrival_delay) 
tibble [4,037 × 2] (S3: tbl_df/tbl/data.frame)
 $ tailnum  : chr [1:4037] "D942DN" "N0EGMQ" "N10156" "N102UW" ...
 $ avg_delay: num [1:4037] 31.5 9.98 12.72 2.94 -6.93 ...
lowest_delay <- avg_arrival_delay %>%
  arrange(avg_delay) %>%                      
  slice(1)                                     

lowest_delay

Q5:

not_cancelled %>% 
 group_by(year, month, day) %>% 
 summarise(
  first = min(dep_time),
  last = max(dep_time)
 )
`summarise()` has grouped output by 'year', 'month'. You can override using the `.groups` argument.

Q6:

proportion_delays <- flights %>%
  filter(!is.na(dep_delay)) %>%  
  group_by(month) %>%            
  summarise(
    total_flights = n(),          
    delayed_flights = sum(dep_delay > 60),  
    proportion_delayed = delayed_flights / total_flights  
  ) %>%
  arrange(month)  

proportion_delays

Q7:

carriers_per_destination <- flights %>%
  group_by(dest) %>%                          
  summarise(unique_carriers = n_distinct(carrier), .groups = 'drop') %>%  
  arrange(desc(unique_carriers))              

carriers_per_destination

Q9:

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")

delays
LS0tCnRpdGxlOiAiUiBOb3RlYm9vayIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQpRMToKYGBge3J9CiNpbnN0YWxsLnBhY2thZ2VzKCJkcGx5ciIpCiNpbnN0YWxsLnBhY2thZ2VzKCJwYWNtYW4iKQpwYWNtYW46OnBfbG9hZChueWNmbGlnaHRzMTMpClZpZXcoZmxpZ2h0cykgIyB0aGlzIFZpZXcoKSBmdW5jdGlvbiBvcGVucyBsZXRzIHlvdSBkaXJlY3RseSB2aWV3IHRoZSB3aG9sZSBkYXRhc2V0CmdsaW1wc2UoZmxpZ2h0cykgIyB0aGlzIGdsaW1wc2UoKSBmdW5jdGlvbiBwcm92aWRlcyBhIHF1aWNrIG92ZXJ2aWV3IG9mIHRoZSBkYXRhc2V0CnN1bW1hcnkoZmxpZ2h0cykKYGBgCgoKUTI6CmBgYHtyfQpzZWxlY3QoZmxpZ2h0cywgc3RhcnRzX3dpdGgoImRlcCIpKQpgYGAKCmBgYHtyfQpzb3J0ZiA8LSBhcnJhbmdlKGZsaWdodHMsZGVzYyhkZXBfZGVsYXkpKSAKc2VsZWN0KHNvcnRmLCBjYXJyaWVyLCBmbGlnaHQsIHRhaWxudW0sIGV2ZXJ5dGhpbmcoKSkKYGBgCgpgYGB7cn0Kc3VtbWFyaXNlKGZsaWdodHMsIGRlbGF5PW1lYW4oZGVwX2RlbGF5LG5hLnJtPVRSVUUpKQpgYGAKCmBgYHtyfQptYXhkZXAgPC0gbWF4KGZsaWdodHMkZGVwX2RlbGF5LCBuYS5ybT1UUlVFKQptYXhkZXBfaWQgPC0gd2hpY2goZmxpZ2h0cyRkZXBfZGVsYXk9PW1heGRlcCkKZmxpZ2h0c1ttYXhkZXBfaWQsIDEwOjEyXQpgYGAKCgpRMzoKYGBge3J9Cm5vdF9jYW5jZWxsZWQgPC0gZmxpZ2h0cyAlPiUgCiBmaWx0ZXIoIWlzLm5hKGRlcF9kZWxheSksICFpcy5uYShhcnJfZGVsYXkpKQoKbm90X2NhbmNlbGxlZApgYGAKCmBgYHtyfQpkZWxheXMgPC0gbm90X2NhbmNlbGxlZCAlPiUgCiBncm91cF9ieSh0YWlsbnVtKSAlPiUgCiBzdW1tYXJpc2UoCiAgZGVsYXkgPSBtZWFuKGFycl9kZWxheSkKICkKCmRlbGF5cwpgYGAKCmBgYHtyfQpmbGlnaHRzICU+JSAKIGdyb3VwX2J5KHllYXIsIG1vbnRoLCBkYXkpICU+JSAKIHN1bW1hcmlzZShtZWFuID0gbWVhbihkZXBfZGVsYXksIG5hLnJtID0gVFJVRSkpCmBgYAoKYGBge3J9Cm5vdF9jYW5jZWxsZWQgPC0gZmxpZ2h0cyAlPiUgCiBmaWx0ZXIoIWlzLm5hKGRlcF9kZWxheSkpCgpub3RfY2FuY2VsbGVkICU+JSAKIGdyb3VwX2J5KHllYXIsIG1vbnRoLCBkYXkpICU+JSAKIHN1bW1hcmlzZShtZWFuID0gbWVhbihkZXBfZGVsYXkpKQpgYGAKCgpRNDoKYGBge3J9CmxpYnJhcnkoZHBseXIpCmxpYnJhcnkobnljZmxpZ2h0czEzKQoKYXZnX2Fycml2YWxfZGVsYXkgPC0gZmxpZ2h0cyAlPiUKICBmaWx0ZXIoIWlzLm5hKGFycl9kZWxheSkpICU+JSAgICAgICAgICAgICAgIAogIGdyb3VwX2J5KHRhaWxudW0pICU+JSAgICAgICAgICAgICAgICAgICAgICAgCiAgc3VtbWFyaXNlKGF2Z19kZWxheSA9IG1lYW4oYXJyX2RlbGF5LCBuYS5ybSA9IFRSVUUpLCAuZ3JvdXBzID0gJ2Ryb3AnKSAKCnN0cihhdmdfYXJyaXZhbF9kZWxheSkgCgpsb3dlc3RfZGVsYXkgPC0gYXZnX2Fycml2YWxfZGVsYXkgJT4lCiAgYXJyYW5nZShhdmdfZGVsYXkpICU+JSAgICAgICAgICAgICAgICAgICAgICAKICBzbGljZSgxKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKCmxvd2VzdF9kZWxheQpgYGAKCgpRNToKYGBge3J9Cm5vdF9jYW5jZWxsZWQgJT4lIAogZ3JvdXBfYnkoeWVhciwgbW9udGgsIGRheSkgJT4lIAogc3VtbWFyaXNlKAogIGZpcnN0ID0gbWluKGRlcF90aW1lKSwKICBsYXN0ID0gbWF4KGRlcF90aW1lKQogKQpgYGAKCgpRNjoKYGBge3J9CnByb3BvcnRpb25fZGVsYXlzIDwtIGZsaWdodHMgJT4lCiAgZmlsdGVyKCFpcy5uYShkZXBfZGVsYXkpKSAlPiUgIAogIGdyb3VwX2J5KG1vbnRoKSAlPiUgICAgICAgICAgICAKICBzdW1tYXJpc2UoCiAgICB0b3RhbF9mbGlnaHRzID0gbigpLCAgICAgICAgICAKICAgIGRlbGF5ZWRfZmxpZ2h0cyA9IHN1bShkZXBfZGVsYXkgPiA2MCksICAKICAgIHByb3BvcnRpb25fZGVsYXllZCA9IGRlbGF5ZWRfZmxpZ2h0cyAvIHRvdGFsX2ZsaWdodHMgIAogICkgJT4lCiAgYXJyYW5nZShtb250aCkgIAoKcHJvcG9ydGlvbl9kZWxheXMKYGBgCgoKUTc6CmBgYHtyfQpjYXJyaWVyc19wZXJfZGVzdGluYXRpb24gPC0gZmxpZ2h0cyAlPiUKICBncm91cF9ieShkZXN0KSAlPiUgICAgICAgICAgICAgICAgICAgICAgICAgIAogIHN1bW1hcmlzZSh1bmlxdWVfY2FycmllcnMgPSBuX2Rpc3RpbmN0KGNhcnJpZXIpLCAuZ3JvdXBzID0gJ2Ryb3AnKSAlPiUgIAogIGFycmFuZ2UoZGVzYyh1bmlxdWVfY2FycmllcnMpKSAgICAgICAgICAgICAgCgpjYXJyaWVyc19wZXJfZGVzdGluYXRpb24KYGBgCgoKUTk6CmBgYHtyfQpkZWxheXMgPC0gZmxpZ2h0cyAlPiUgCiBncm91cF9ieShkZXN0KSAlPiUgCiBzdW1tYXJpc2UoCiAgY291bnQgPSBuKCksCiAgZGlzdCA9IG1lYW4oZGlzdGFuY2UsIG5hLnJtID0gVFJVRSksCiAgZGVsYXkgPSBtZWFuKGFycl9kZWxheSwgbmEucm0gPSBUUlVFKQogKSAlPiUgCiBmaWx0ZXIoY291bnQgPiAyMCwgZGVzdCAhPSAiSE5MIikKCmRlbGF5cwpgYGAKCg==