library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
not_cancelled <- nycflights13::flights %>% filter(!is.na(arr_delay))

best_tailnum <-
  not_cancelled %>%
  group_by(tailnum) %>%
  summarise(avg_arr_delay = mean(arr_delay), n = n(), .groups="drop") %>%
  arrange(avg_arr_delay)

head(best_tailnum, 5)
## # A tibble: 5 × 3
##   tailnum avg_arr_delay     n
##   <chr>           <dbl> <int>
## 1 N560AS          -53       1
## 2 N315AS          -51       1
## 3 N517AS          -40.5     2
## 4 N592AS          -35.5     4
## 5 N7AYAA          -35       1
library(dplyr)
nycflights13::flights %>%
  filter(!is.na(dep_delay)) %>%
  mutate(over1hr = dep_delay > 60) %>%
  group_by(month) %>%
  summarise(prop_over1hr = mean(over1hr), .groups="drop") %>%
  arrange(desc(prop_over1hr))
## # A tibble: 12 × 2
##    month prop_over1hr
##    <int>        <dbl>
##  1     7       0.134 
##  2     6       0.128 
##  3    12       0.0942
##  4     4       0.0916
##  5     3       0.0837
##  6     5       0.0818
##  7     8       0.0796
##  8     2       0.0698
##  9     1       0.0688
## 10     9       0.0490
## 11    10       0.0469
## 12    11       0.0402