Introduction

There are a multitude of ways to measure who is the best kicker in the NFL. I looked no further than the kickers them excluding punters,gunners, and returners. I narrowed down the kickers to only AFC because it makes it easier for the viewer to understand because once we start to add too many kickers our graphs get crowded. It is difficult to fully understand over 32+ points of data that would cover the entire league so I wanted to make it one conference since a lot of them have similar schedules and play in in conditions that are aligned.I made the seasons set to just one year which is 2020. I did this because kickers can change from season to season and players retire, get traded, and regress so it best to stick with one season. I made sure the kicker data would be filtered to “crunch time” because I believe when trying to find the best kicker it is key to view when their kicks matter most when the pressure is on with the game on the line.

# project to find the best 50 yard+ field goal kickers in the afc during the fourth quarter and after the in the
# most recent season
# filter afc east
# most recent season
# 4th quarter and overtime
# 50 kicks yards or more
# setwd"//apporto.com/dfs/LOYOLA/Users/matheis_loyola/Desktop/IS470"
library(httr)
library(data.table)
library(lubridate)
library(dplyr)
library(RColorBrewer)
library(tidytext)
library(ggplot2)
library(tidyverse)

Data Merge

This is where I merged my data sets of games, players, pffscoutingdata, and the tracking data. It is essential to merge the data in order to group together create one dataframe with all the data.

You can also embed plots, for example:

df1 <- fread("plays.csv")
df4 <- fread("PFFScoutingData.csv")
df2 <- fread("players.csv")
df3 <- fread("games.csv")
df <- merge(df1,df2, by.x=c("kickerId"), by.y=c("nflId"), all.x = TRUE)
df <- merge(df,df3, by=c("gameId"),  all.x = TRUE)
df <- merge(df,df4, by=c("gameId", "playId"),all.x=TRUE)

Data Filtering

In this section I filtered my data to exclude the NFC, eliminated the first half, set the season to 2020, assure the attempt is a field goal and not any other special teams play.I set made field goals equal to 1 and missed equals to 0 because that is how I am able to create a field goal success rate. Without that new piece of data I would not be able to compare the kickers with each other.

df6 <- df %>%
  select(quarter,displayName,season,yardsToGo,specialTeamsPlayType,specialTeamsResult,
         possessionTeam)%>%
  filter(possessionTeam %in% c( "BUF", "NYJ", "NE", "MIA", "BAL","CLE","PIT","IND","CIN","TEN","HOU","JAX","LAC","KC","DEN","OAK"),
         quarter %in% c(3,4, 5), 
         yardsToGo >= 1,
         season ==(2020),
         specialTeamsPlayType == "Field Goal")%>%
  mutate(score_yn=ifelse(specialTeamsResult=="Kick Attempt Good",1,0))%>%
  group_by(displayName)%>%
  summarise(kick_count=n(),
          seasons=n_distinct(season),
          success = sum(score_yn),
          fail=n()-success,
          success_rate=if(success>0) round(100*success/(success+fail),2)else 0,
          .groups='keep')%>%
  data.frame()

Plotting

This is where I plot my bar graph. I started off with setting the axis which I would later have to flip in order to fit the displayNames on the screen. I increased the size and the alpha of the bars to showcase the difference between them and to make them pop off the screen. After I flipped the cordinates I made labels for my titles and axis. I wanted to make sure that someone can quickly comprehend graph my graph based of the the title.

ggplot(data=df6,aes(y=success_rate,x=reorder(displayName,success_rate),fill=displayName))+
  geom_bar(stat = "identity",
           alpha=.8,
           size=5) +
    coord_flip()+
    labs(title = "Field Goal Percentage in AFC(Only)",
         subtitle = "Crunch Time Meaning Second Half and Overtime",
         y= "Field Goal Percentage",
         x= "Kicker", )

Conclusion

We find that Chase McLaughlin and Stephen Gostkowski are the two worst kickers while there are 9 kickers with a 100% rate. More than half of the kickers preform well on under pressure with many kickers making at least 90%+. This is a shocking finding because you would think across a whole season kickers would miss a lot more especially considering how quickly most get replaced. The individuals at the bottom are out of the league while most at the top regulary make pro bowl teams and are still contracted.