load the required library

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

load csv file into R

raw<- read.csv("https://raw.githubusercontent.com/Weicaidata/607/master/airline%20database.csv")
str(raw)
## 'data.frame':    4 obs. of  7 variables:
##  $ Airline      : Factor w/ 2 levels "ALASKA","AM WEST": 1 1 2 2
##  $ Status       : Factor w/ 2 levels "delayed","on time": 2 1 2 1
##  $ Los.Angeles  : int  497 62 694 117
##  $ Phoenix      : int  221 12 4840 415
##  $ San.Diego    : int  212 20 383 65
##  $ San.Fransisco: int  503 102 320 129
##  $ Seattle      : int  1841 305 201 61
raw
##   Airline  Status Los.Angeles Phoenix San.Diego San.Fransisco Seattle
## 1  ALASKA on time         497     221       212           503    1841
## 2  ALASKA delayed          62      12        20           102     305
## 3 AM WEST on time         694    4840       383           320     201
## 4 AM WEST delayed         117     415        65           129      61

use tidyr to pivot table from wide to long table for further analysis

df_gather <- gather(raw,city,flightnum,Los.Angeles:Seattle)
df_gather
##    Airline  Status          city flightnum
## 1   ALASKA on time   Los.Angeles       497
## 2   ALASKA delayed   Los.Angeles        62
## 3  AM WEST on time   Los.Angeles       694
## 4  AM WEST delayed   Los.Angeles       117
## 5   ALASKA on time       Phoenix       221
## 6   ALASKA delayed       Phoenix        12
## 7  AM WEST on time       Phoenix      4840
## 8  AM WEST delayed       Phoenix       415
## 9   ALASKA on time     San.Diego       212
## 10  ALASKA delayed     San.Diego        20
## 11 AM WEST on time     San.Diego       383
## 12 AM WEST delayed     San.Diego        65
## 13  ALASKA on time San.Fransisco       503
## 14  ALASKA delayed San.Fransisco       102
## 15 AM WEST on time San.Fransisco       320
## 16 AM WEST delayed San.Fransisco       129
## 17  ALASKA on time       Seattle      1841
## 18  ALASKA delayed       Seattle       305
## 19 AM WEST on time       Seattle       201
## 20 AM WEST delayed       Seattle        61

use spread functon to add delayed and ‘on time’ columns

df_spread <- spread(df_gather,Status,flightnum)
df_spread
##    Airline          city delayed on time
## 1   ALASKA   Los.Angeles      62     497
## 2   ALASKA       Phoenix      12     221
## 3   ALASKA     San.Diego      20     212
## 4   ALASKA San.Fransisco     102     503
## 5   ALASKA       Seattle     305    1841
## 6  AM WEST   Los.Angeles     117     694
## 7  AM WEST       Phoenix     415    4840
## 8  AM WEST     San.Diego      65     383
## 9  AM WEST San.Fransisco     129     320
## 10 AM WEST       Seattle      61     201

use dpylr to add another two column ontime percentage and delayed percentage.

df <- df_spread %>% 
  mutate(total= delayed +df_spread$`on time`,ontime_perc=`on time`/total,delayed_perc=delayed/total)
df
##    Airline          city delayed on time total ontime_perc delayed_perc
## 1   ALASKA   Los.Angeles      62     497   559   0.8890877   0.11091234
## 2   ALASKA       Phoenix      12     221   233   0.9484979   0.05150215
## 3   ALASKA     San.Diego      20     212   232   0.9137931   0.08620690
## 4   ALASKA San.Fransisco     102     503   605   0.8314050   0.16859504
## 5   ALASKA       Seattle     305    1841  2146   0.8578751   0.14212488
## 6  AM WEST   Los.Angeles     117     694   811   0.8557337   0.14426634
## 7  AM WEST       Phoenix     415    4840  5255   0.9210276   0.07897241
## 8  AM WEST     San.Diego      65     383   448   0.8549107   0.14508929
## 9  AM WEST San.Fransisco     129     320   449   0.7126949   0.28730512
## 10 AM WEST       Seattle      61     201   262   0.7671756   0.23282443

use bar to compare the ontime percentage between two lines, find that they are very similar, not much differnt.

library(ggplot2)
ggplot(df, aes(x = Airline, y=ontime_perc, fill = city)) +
    geom_bar(stat="identity",position="dodge") + 
    xlab("Airline") + ylab("ontime_perc") 

however, the delayed percentage between two airlines, we can see that ALaska airline of each lines are lower than AM WEST, it mean ALASKA is doing better than AM WEST.

ggplot(df, aes(x = Airline, y=delayed_perc, fill = city)) +
    geom_bar(stat="identity",position="dodge") + 
    xlab("Airline") + ylab("delayed_perc")