library(nycflights13)
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.1
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors

1. join + filter - Which airplanes fly LGA to XNA (1 POINT)

flights_from_LGA <- flights %>% 
  filter(origin == "LGA")

flights_LGA_to_XNA <- flights_from_LGA %>%
  inner_join(airports, by = c("dest" = "faa")) %>%
  filter(dest == "XNA")

flights_LGA_to_XNA <- flights_LGA_to_XNA %>%
  select(year, month, day, dep_time, arr_time, carrier, flight, tailnum)

print(flights_LGA_to_XNA)
## # A tibble: 745 × 8
##     year month   day dep_time arr_time carrier flight tailnum
##    <int> <int> <int>    <int>    <int> <chr>    <int> <chr>  
##  1  2013     1     1      656     1007 MQ        4534 N722MQ 
##  2  2013     1     1     1525     1934 MQ        4525 N719MQ 
##  3  2013     1     1     1740     2158 MQ        4413 N739MQ 
##  4  2013     1     2      656     1014 MQ        4534 N719MQ 
##  5  2013     1     2     1531     1846 MQ        4525 N711MQ 
##  6  2013     1     2     1740     2035 MQ        4413 N723MQ 
##  7  2013     1     3      703     1014 MQ        4534 N711MQ 
##  8  2013     1     3     1525     1802 MQ        4525 N730MQ 
##  9  2013     1     3     1737     1953 MQ        4413 N722MQ 
## 10  2013     1     4      701      934 MQ        4534 N719MQ 
## # ℹ 735 more rows

2. join - Add the airline name to the flights table (1 POINT)

flights_with_airline <- flights %>%
  inner_join(airlines, by = "carrier")

flights_with_airline <- flights_with_airline %>%
  select(year, month, day, dep_time, arr_time, carrier, name, flight, tailnum)

print(flights_with_airline)
## # A tibble: 336,776 × 9
##     year month   day dep_time arr_time carrier name               flight tailnum
##    <int> <int> <int>    <int>    <int> <chr>   <chr>               <int> <chr>  
##  1  2013     1     1      517      830 UA      United Air Lines …   1545 N14228 
##  2  2013     1     1      533      850 UA      United Air Lines …   1714 N24211 
##  3  2013     1     1      542      923 AA      American Airlines…   1141 N619AA 
##  4  2013     1     1      544     1004 B6      JetBlue Airways       725 N804JB 
##  5  2013     1     1      554      812 DL      Delta Air Lines I…    461 N668DN 
##  6  2013     1     1      554      740 UA      United Air Lines …   1696 N39463 
##  7  2013     1     1      555      913 B6      JetBlue Airways       507 N516JB 
##  8  2013     1     1      557      709 EV      ExpressJet Airlin…   5708 N829AS 
##  9  2013     1     1      557      838 B6      JetBlue Airways        79 N593JB 
## 10  2013     1     1      558      753 AA      American Airlines…    301 N3ALAA 
## # ℹ 336,766 more rows

3. join + select + distinct() - Which airports have no commercial flights (1 POINT)

commercial_airports <- flights %>%
  select(origin, dest) %>%
  distinct() %>%
  gather(key = "type", value = "faa", origin, dest) %>%
  distinct(faa)

airports_no_flights <- airports %>%
  anti_join(commercial_airports, by = "faa")

print(airports_no_flights)
## # A tibble: 1,355 × 8
##    faa   name                             lat    lon   alt    tz dst   tzone    
##    <chr> <chr>                          <dbl>  <dbl> <dbl> <dbl> <chr> <chr>    
##  1 04G   Lansdowne Airport               41.1  -80.6  1044    -5 A     America/…
##  2 06A   Moton Field Municipal Airport   32.5  -85.7   264    -6 A     America/…
##  3 06C   Schaumburg Regional             42.0  -88.1   801    -6 A     America/…
##  4 06N   Randall Airport                 41.4  -74.4   523    -5 A     America/…
##  5 09J   Jekyll Island Airport           31.1  -81.4    11    -5 A     America/…
##  6 0A9   Elizabethton Municipal Airport  36.4  -82.2  1593    -5 A     America/…
##  7 0G6   Williams County Airport         41.5  -84.5   730    -5 A     America/…
##  8 0G7   Finger Lakes Regional Airport   42.9  -76.8   492    -5 A     America/…
##  9 0P2   Shoestring Aviation Airfield    39.8  -76.6  1000    -5 U     America/…
## 10 0S9   Jefferson County Intl           48.1 -123.    108    -8 A     America/…
## # ℹ 1,345 more rows

4. EXTRA CREDIT - (2 POINT)

Create a table with the names of the airports with the most

winds (wind_speed > 30). The table must contain only the airport

name (airports$name) and no duplicate rows

high_wind_airports <- weather %>%
  filter(wind_speed > 30) %>%
  select(origin) %>%
  distinct() %>%
  inner_join(airports, by = c("origin" = "faa")) %>%
  select(name) %>%
  distinct()

print(high_wind_airports)
## # A tibble: 3 × 1
##   name               
##   <chr>              
## 1 Newark Liberty Intl
## 2 John F Kennedy Intl
## 3 La Guardia