Assignment – Tidying and Transforming Data

library(tidyr)
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

read in csv:

airlines <- read.csv("https://raw.githubusercontent.com/GuillermoCharlesSchneider/DATA-607/main/HW5/airlines.csv")
airlines <- data.frame(airlines[-3, ])
colnames(airlines)[1:2] <- c('airline','status')
airlines[2,1] <- 'ALASKA'
airlines[4,1] <- 'AM WEST'

tidy and make it long rather than wide:

airlines2 <- airlines %>%
  pivot_longer(
    3:7,
    names_to = "destinations", 
    values_to = "occurances"
  )


#compare within destinations
airlines2 %>% filter(status == "delayed")%>% arrange(destinations, desc(occurances))
## # A tibble: 10 × 4
##    airline status  destinations  occurances
##    <chr>   <chr>   <chr>              <int>
##  1 AM WEST delayed Los.Angeles          117
##  2 ALASKA  delayed Los.Angeles           62
##  3 AM WEST delayed Phoenix              415
##  4 ALASKA  delayed Phoenix               12
##  5 AM WEST delayed San.Diego             65
##  6 ALASKA  delayed San.Diego             20
##  7 AM WEST delayed San.Francisco        129
##  8 ALASKA  delayed San.Francisco        102
##  9 ALASKA  delayed Seattle              305
## 10 AM WEST delayed Seattle               61
# most delayed
airlines2 %>% filter(status == "delayed")%>% arrange(desc(occurances))
## # A tibble: 10 × 4
##    airline status  destinations  occurances
##    <chr>   <chr>   <chr>              <int>
##  1 AM WEST delayed Phoenix              415
##  2 ALASKA  delayed Seattle              305
##  3 AM WEST delayed San.Francisco        129
##  4 AM WEST delayed Los.Angeles          117
##  5 ALASKA  delayed San.Francisco        102
##  6 AM WEST delayed San.Diego             65
##  7 ALASKA  delayed Los.Angeles           62
##  8 AM WEST delayed Seattle               61
##  9 ALASKA  delayed San.Diego             20
## 10 ALASKA  delayed Phoenix               12

Recommend flying AM WEST.

AM WEST (10.89%) has an overall slightly lower average percentage of delayed flights than ALASKA (13.27%)

#group  by airlines, then delay status
airlines3 <- airlines2 |> 
  group_by(airline,status) |> 
  summarize(flights = sum(occurances), .groups = 'drop') 

#add an additional column of delayed status number / total airlines flights
airlines3 <-
airlines3 |>  
group_by(airline) %>% 
mutate(percent = flights / sum(flights) * 100)

print(airlines3)
## # A tibble: 4 × 4
## # Groups:   airline [2]
##   airline status  flights percent
##   <chr>   <chr>     <int>   <dbl>
## 1 ALASKA  delayed     501    13.3
## 2 ALASKA  on time    3274    86.7
## 3 AM WEST delayed     787    10.9
## 4 AM WEST on time    6438    89.1

airline recommendation by destination:

Los.Angeles -> AM WEST. pretty similar delay rates, doesnt seem to matter much
Phoenix -> ALASKA. huge advantage to ALASKA, but also a tiny sample size of 12 flights
San.Diego -> ALASKA. blessed destination, least delays for either airline of all the destinations
San.Francisco -> AM WEST. sightly better chance of no delays w/ AM WEST
Seattle -> AM WEST. just asking for trouble if you fly ALASKA w/ 10x more delays

#group  by airlines, then delay status
airlines4 <- airlines2 

#add an additional column of delayed status number / total airlines flights
airlines4 <-
airlines4 |>  
  group_by(airline) %>% 
  mutate(percent = occurances / sum(occurances) * 100)

print(airlines4 %>% filter(status == "delayed") %>% arrange(destinations))
## # A tibble: 10 × 5
## # Groups:   airline [2]
##    airline status  destinations  occurances percent
##    <chr>   <chr>   <chr>              <int>   <dbl>
##  1 ALASKA  delayed Los.Angeles           62   1.64 
##  2 AM WEST delayed Los.Angeles          117   1.62 
##  3 ALASKA  delayed Phoenix               12   0.318
##  4 AM WEST delayed Phoenix              415   5.74 
##  5 ALASKA  delayed San.Diego             20   0.530
##  6 AM WEST delayed San.Diego             65   0.900
##  7 ALASKA  delayed San.Francisco        102   2.70 
##  8 AM WEST delayed San.Francisco        129   1.79 
##  9 ALASKA  delayed Seattle              305   8.08 
## 10 AM WEST delayed Seattle               61   0.844