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