library(tidyverse)
library(openintro)
data (nycflights)


ggplot(data = nycflights, aes(x = dep_delay)) +
  geom_histogram()

ggplot(data = nycflights, aes(x = dep_delay)) +
  geom_histogram(binwidth = 15)

ggplot(data = nycflights, aes(x = dep_delay)) +
  geom_histogram(binwidth = 150)

lax_flights <- nycflights %>%
  filter(dest == "LAX")

ggplot(data = lax_flights, aes(x = dep_delay)) +
  geom_histogram()

lax_flights %>%
  summarise(mean_dd = mean(dep_delay), 
            median_dd = median(dep_delay), 
            n = n())
## # A tibble: 1 × 3
##   mean_dd median_dd     n
##     <dbl>     <dbl> <int>
## 1    9.78        -1  1583
sfo_feb_flights <- nycflights %>%
  filter(dest == "SFO", month == 2)

nrow(sfo_feb_flights)
## [1] 68
ggplot(data = sfo_feb_flights, aes(x = arr_delay)) +
  geom_histogram()

sfo_feb_flights %>%
  summarise(mean_ad = mean(arr_delay, na.rm = TRUE), 
            median_ad = median(arr_delay, na.rm = TRUE), 
            sd_ad = sd(arr_delay, na.rm = TRUE), 
            iqr_ad = IQR(arr_delay, na.rm = TRUE), 
            min_ad = min(arr_delay, na.rm = TRUE), 
            max_ad = max(arr_delay, na.rm = TRUE), 
            n = n())
## # A tibble: 1 × 7
##   mean_ad median_ad sd_ad iqr_ad min_ad max_ad     n
##     <dbl>     <dbl> <dbl>  <dbl>  <dbl>  <dbl> <int>
## 1    -4.5       -11  36.3   23.2    -66    196    68
sfo_feb_flights %>%
  group_by(origin) %>%
  summarise(median_dd = median(dep_delay), iqr_dd = IQR(dep_delay), n_flights = n())
## # A tibble: 2 × 4
##   origin median_dd iqr_dd n_flights
##   <chr>      <dbl>  <dbl>     <int>
## 1 EWR          0.5   5.75         8
## 2 JFK         -2.5  15.2         60
sfo_feb_flights %>%
  group_by(carrier) %>%
  summarise(median_ad = median(arr_delay, na.rm = TRUE), 
            iqr_ad = IQR(arr_delay, na.rm = TRUE), 
            n_flights = n()) %>%
  arrange(desc(iqr_ad))
## # A tibble: 5 × 4
##   carrier median_ad iqr_ad n_flights
##   <chr>       <dbl>  <dbl>     <int>
## 1 DL          -15     22          19
## 2 UA          -10     22          21
## 3 VX          -22.5   21.2        12
## 4 AA            5     17.5        10
## 5 B6          -10.5   12.2         6
nycflights %>%
  group_by(month) %>%
  summarise(mean_dd = mean(dep_delay, na.rm = TRUE)) %>%
  arrange(desc(mean_dd))
## # A tibble: 12 × 2
##    month mean_dd
##    <int>   <dbl>
##  1     7   20.8 
##  2     6   20.4 
##  3    12   17.4 
##  4     4   14.6 
##  5     3   13.5 
##  6     5   13.3 
##  7     8   12.6 
##  8     2   10.7 
##  9     1   10.2 
## 10     9    6.87
## 11    11    6.10
## 12    10    5.88
nycflights <- nycflights %>%
  mutate(dep_type = ifelse(dep_delay < 5, "on time", "delayed"))

nycflights %>%
  group_by(origin) %>%
  summarise(ot_dep_rate = sum(dep_type == "on time") / n()) %>%
  arrange(desc(ot_dep_rate))
## # A tibble: 3 × 2
##   origin ot_dep_rate
##   <chr>        <dbl>
## 1 LGA          0.728
## 2 JFK          0.694
## 3 EWR          0.637
ggplot(data = nycflights, aes(x = origin, fill = dep_type)) +
  geom_bar()

nycflights <- nycflights %>%
  mutate(avg_speed = distance / (air_time / 60))

ggplot(data = nycflights, aes(x = distance, y = avg_speed)) +
  geom_point()

selected_carriers <- nycflights %>%
  filter(carrier %in% c("AA", "DL", "UA"))

ggplot(data = selected_carriers, aes(x = dep_delay, y = arr_delay, color = carrier)) +
  geom_point()

LS0tCnRpdGxlOiAiTGFiIDI6IEludHJvZHVjdGlvbiB0byBEYXRhIgphdXRob3I6ICJJbWFhbiBNdWdoYWwiCmRhdGU6ICI3LzMvMjAyNCIKb3V0cHV0OiBvcGVuaW50cm86OmxhYl9yZXBvcnQKLS0tCgpgYGB7ciBsb2FkLXBhY2thZ2VzLCBtZXNzYWdlPUZBTFNFfQpsaWJyYXJ5KHRpZHl2ZXJzZSkKbGlicmFyeShvcGVuaW50cm8pCmRhdGEgKG55Y2ZsaWdodHMpCgoKZ2dwbG90KGRhdGEgPSBueWNmbGlnaHRzLCBhZXMoeCA9IGRlcF9kZWxheSkpICsKICBnZW9tX2hpc3RvZ3JhbSgpCgpnZ3Bsb3QoZGF0YSA9IG55Y2ZsaWdodHMsIGFlcyh4ID0gZGVwX2RlbGF5KSkgKwogIGdlb21faGlzdG9ncmFtKGJpbndpZHRoID0gMTUpCgpnZ3Bsb3QoZGF0YSA9IG55Y2ZsaWdodHMsIGFlcyh4ID0gZGVwX2RlbGF5KSkgKwogIGdlb21faGlzdG9ncmFtKGJpbndpZHRoID0gMTUwKQoKbGF4X2ZsaWdodHMgPC0gbnljZmxpZ2h0cyAlPiUKICBmaWx0ZXIoZGVzdCA9PSAiTEFYIikKCmdncGxvdChkYXRhID0gbGF4X2ZsaWdodHMsIGFlcyh4ID0gZGVwX2RlbGF5KSkgKwogIGdlb21faGlzdG9ncmFtKCkKCmxheF9mbGlnaHRzICU+JQogIHN1bW1hcmlzZShtZWFuX2RkID0gbWVhbihkZXBfZGVsYXkpLCAKICAgICAgICAgICAgbWVkaWFuX2RkID0gbWVkaWFuKGRlcF9kZWxheSksIAogICAgICAgICAgICBuID0gbigpKQoKc2ZvX2ZlYl9mbGlnaHRzIDwtIG55Y2ZsaWdodHMgJT4lCiAgZmlsdGVyKGRlc3QgPT0gIlNGTyIsIG1vbnRoID09IDIpCgpucm93KHNmb19mZWJfZmxpZ2h0cykKCmdncGxvdChkYXRhID0gc2ZvX2ZlYl9mbGlnaHRzLCBhZXMoeCA9IGFycl9kZWxheSkpICsKICBnZW9tX2hpc3RvZ3JhbSgpCgpzZm9fZmViX2ZsaWdodHMgJT4lCiAgc3VtbWFyaXNlKG1lYW5fYWQgPSBtZWFuKGFycl9kZWxheSwgbmEucm0gPSBUUlVFKSwgCiAgICAgICAgICAgIG1lZGlhbl9hZCA9IG1lZGlhbihhcnJfZGVsYXksIG5hLnJtID0gVFJVRSksIAogICAgICAgICAgICBzZF9hZCA9IHNkKGFycl9kZWxheSwgbmEucm0gPSBUUlVFKSwgCiAgICAgICAgICAgIGlxcl9hZCA9IElRUihhcnJfZGVsYXksIG5hLnJtID0gVFJVRSksIAogICAgICAgICAgICBtaW5fYWQgPSBtaW4oYXJyX2RlbGF5LCBuYS5ybSA9IFRSVUUpLCAKICAgICAgICAgICAgbWF4X2FkID0gbWF4KGFycl9kZWxheSwgbmEucm0gPSBUUlVFKSwgCiAgICAgICAgICAgIG4gPSBuKCkpCgpzZm9fZmViX2ZsaWdodHMgJT4lCiAgZ3JvdXBfYnkob3JpZ2luKSAlPiUKICBzdW1tYXJpc2UobWVkaWFuX2RkID0gbWVkaWFuKGRlcF9kZWxheSksIGlxcl9kZCA9IElRUihkZXBfZGVsYXkpLCBuX2ZsaWdodHMgPSBuKCkpCgpzZm9fZmViX2ZsaWdodHMgJT4lCiAgZ3JvdXBfYnkoY2FycmllcikgJT4lCiAgc3VtbWFyaXNlKG1lZGlhbl9hZCA9IG1lZGlhbihhcnJfZGVsYXksIG5hLnJtID0gVFJVRSksIAogICAgICAgICAgICBpcXJfYWQgPSBJUVIoYXJyX2RlbGF5LCBuYS5ybSA9IFRSVUUpLCAKICAgICAgICAgICAgbl9mbGlnaHRzID0gbigpKSAlPiUKICBhcnJhbmdlKGRlc2MoaXFyX2FkKSkKCm55Y2ZsaWdodHMgJT4lCiAgZ3JvdXBfYnkobW9udGgpICU+JQogIHN1bW1hcmlzZShtZWFuX2RkID0gbWVhbihkZXBfZGVsYXksIG5hLnJtID0gVFJVRSkpICU+JQogIGFycmFuZ2UoZGVzYyhtZWFuX2RkKSkKCm55Y2ZsaWdodHMgPC0gbnljZmxpZ2h0cyAlPiUKICBtdXRhdGUoZGVwX3R5cGUgPSBpZmVsc2UoZGVwX2RlbGF5IDwgNSwgIm9uIHRpbWUiLCAiZGVsYXllZCIpKQoKbnljZmxpZ2h0cyAlPiUKICBncm91cF9ieShvcmlnaW4pICU+JQogIHN1bW1hcmlzZShvdF9kZXBfcmF0ZSA9IHN1bShkZXBfdHlwZSA9PSAib24gdGltZSIpIC8gbigpKSAlPiUKICBhcnJhbmdlKGRlc2Mob3RfZGVwX3JhdGUpKQoKZ2dwbG90KGRhdGEgPSBueWNmbGlnaHRzLCBhZXMoeCA9IG9yaWdpbiwgZmlsbCA9IGRlcF90eXBlKSkgKwogIGdlb21fYmFyKCkKCm55Y2ZsaWdodHMgPC0gbnljZmxpZ2h0cyAlPiUKICBtdXRhdGUoYXZnX3NwZWVkID0gZGlzdGFuY2UgLyAoYWlyX3RpbWUgLyA2MCkpCgpnZ3Bsb3QoZGF0YSA9IG55Y2ZsaWdodHMsIGFlcyh4ID0gZGlzdGFuY2UsIHkgPSBhdmdfc3BlZWQpKSArCiAgZ2VvbV9wb2ludCgpCgpzZWxlY3RlZF9jYXJyaWVycyA8LSBueWNmbGlnaHRzICU+JQogIGZpbHRlcihjYXJyaWVyICVpbiUgYygiQUEiLCAiREwiLCAiVUEiKSkKCmdncGxvdChkYXRhID0gc2VsZWN0ZWRfY2FycmllcnMsIGFlcyh4ID0gZGVwX2RlbGF5LCB5ID0gYXJyX2RlbGF5LCBjb2xvciA9IGNhcnJpZXIpKSArCiAgZ2VvbV9wb2ludCgpCgoKCg==