I need to arrange the output as such: arrange(desc(PPM), desc(Wins), desc(GSM), GAM)
but I am having trouble with the placement. Any ideas?
CODE BELOW
Thanks!
#Function
EPL_Standings <- function(date, season){
options(dplyr.summarise.inform = FALSE)
#Data Frames
s2021 <- read_csv("http://www.football-data.co.uk/mmz4281/2021/E0.csv")
s2021$Season <- factor("2020/21")
s1920 <- read_csv("http://www.football-data.co.uk/mmz4281/1920/E0.csv")
s1920$Season <- factor("2019/20")
#Select the columns needed for assignment
EPL_data <- bind_rows(s2021, s1920, s1819) %>% select(Date,HomeTeam,AwayTeam,FTHG,FTAG,FTR)%>%
#Use lubridate to change the date to read Month/Day/Year
mutate(Date = dmy(Date))%>%
filter(Date <= mdy(date))
#Make a column called 'Team'
Home <- EPL_data%>%
select(Date,Team = HomeTeam,FTHG,FTAG,FTR)%>%
mutate(HomeAway = 'Home')
Away <- EPL_data%>%
select(Date,Team = AwayTeam,FTHG,FTAG,FTR)%>%
mutate(HomeAway = 'Away')
#Join these sets
team_data <- bind_rows(Home, Away)%>%
arrange(Team, desc(Date))%>%
#Check to see if the team won or lost
mutate(Home_Win = ifelse (HomeAway == 'Home' & FTHG > FTAG, 1, 0),
Away_Win = ifelse (HomeAway == 'Away' & FTAG > FTHG, 1, 0),
Home_Tie = ifelse (HomeAway == 'Home' & FTHG == FTAG, 1, 0),
Away_Tie = ifelse (HomeAway == 'Away' & FTAG == FTHG, 1, 0),
Home_Loss = ifelse (HomeAway == 'Home' & FTHG < FTAG, 1, 0),
Away_Loss = ifelse (HomeAway == 'Away' & FTAG < FTHG, 1, 0),
#Goals Scored for Home and Away
Goals_Scored = ifelse (HomeAway == 'Home', FTHG, FTAG),
#Goals Allowed = Goals by the away team
Goals_Allowed = ifelse (HomeAway == 'Home', FTAG, FTHG),
#Returns 1 for win, 0 for loss
Wins1 = ifelse (Home_Win == 1 | Away_Win == 1, 1, 0),
#Returns 1 for loss, 0 for win
Losses1 = ifelse (Home_Loss == 1 | Away_Loss == 1, 1, 0),
#Returns 1 if tie (Draw), 0 if not
Tie = ifelse (Home_Tie == 1 | Away_Tie == 1, 1, 0),)%>%
#Grouping by team
group_by(Team)%>%
#Using variables created above to calculate the following:
#Wins is the sum of Wins1 created above
summarize(Wins = sum(Wins1),
#Ttl Losses is the sum of Losses1 created above
Losses = sum(Losses1),
#Ttl Draws is the sum of Tie(s) created above
Draws = sum(Tie),
#Ttl Wins by the Home team created above
HomeWins = sum(Home_Win),
#Ttl Losses by the Home Team created above
HomeLosses = sum(Home_Loss),
#Ttl Draws for the Home Team by using Home_Tie created above
HomeDraws = sum(Home_Tie),
#Ttl wins by the Away team from Away_Win created above
AwayWins = sum(Away_Win),
#Ttl Losses by the Away team from the Away_Loss created above
AwayLosses = sum(Away_Loss),
#Ttl Draws by the Away team from Away_tie created above
AwayDraws = sum(Away_Tie),
#Ttl Goals Scored for the season using Goals_Scored created above
GS = sum(Goals_Scored),
#Ttl Goals Allowed (scored by the other team by using Goals_Allowed created above)
GA = sum(Goals_Allowed),
#Calculated Points by multiplying the wins by 3, and then adding the total ties (each worth 1 point)
Points = (3 * sum(Wins1)) + sum(Tie),
#Getting the matches played by each team
MatchesPlayed = n(),
#The following helps us get the team's record over the last 10 games
Last10Wins = sum(Wins1[1:10]),
Last10Losses = sum(Losses1[1:10]),
Last10Draws = sum(Tie[1:10]),
min_win = which.min(Wins1 == 1),
min_losses = which.min(Losses1 == 1),
min_draws = which.min(Tie == 1),
length = min(c(min_win, min_losses, min_draws)[c(min_win, min_losses, min_draws) > 1]))%>%
#Using the above variables to calculate PPM, PTPCT, GSM, and GAM and creating columns for each new variable
#Points per match = Points divided by MatchesPlayed
mutate(PPM = Points / MatchesPlayed,
#Point percentage calculated by dividing Points by 3 X MatchesPlayed
PtPct = Points / (3 * MatchesPlayed),
#Goals scored per match is Goals Scored (GS) divided by MatchesPlayed
GSM = GS / MatchesPlayed,
#Goals allowed per match is Goals Allowed (GA) divided by MatchesPlayed
GAM = GA / MatchesPlayed,
#Create Record Column
Record = str_c(Wins, "-",Losses, "-", Draws),
#Create HomeRec Column for the home team's record
HomeRec = str_c(HomeWins, "-", HomeLosses, "-", HomeDraws),
#Create AwayRec Column for the away team's record
AwayRec = str_c(AwayWins, "-", AwayLosses, "-", AwayDraws),
#Last 10 Games Played for each team to find the last 10 wins, losses, draws; (W, L, D)
Last10 = str_c(Last10Wins, "-", Last10Losses, "-", Last10Draws),
#Find the latest Streak
streak_type = ifelse(min_win == 1, 'W', 'D'),
streak_type = ifelse(min_losses == 1, 'L', streak_type),
Streak = str_c(streak_type, length))
#Return only the needed columns
return(team_data %>% select(Team,Record,HomeRec,AwayRec,MatchesPlayed,Points,PPM,PtPct,GS,GSM,GA,GAM,Last10,Streak))
}
EPL_Standings("11/30/2018","2018/19")