This dashboard is designed for front office executives making contract decisions and athletic training/coaching staff seeking to mitigate injury risk. Our direct client is Howie Roseman, General Manager of the Philadelphia Eagles, whose role requires balancing player performance trends with long-term roster strategy.
This dashboard brings together several layers of NFL data to show how conditions, surfaces, age, and historical shifts shape the game. It begins by comparing Quarterback performance throughout the course of a season, demonstrating the impact of fatigue and weather conditions on performance. It then moves into injury patterns, examining how natural and artificial surfaces differ in overall injury rates and how often players at specific positions are hurt on each type of field. The dashboard also explores how weather affects on-field efficiency more broadly, adding context to the performance patterns observed earlier. From there, it analyzes age-related decline among running backs and quarterbacks by tracking metrics like yards per game to highlight when players typically peak and how performance changes over time. Finally, it zooms out to show long-term offensive trends across NFL history, using key statistics to reveal how the league’s style of play has evolved.
This dashboard uses NFL data from 1970 to 2024, covering over 55 seasons of play.
For historical statistics and records, visit Pro Football Reference.
For official rule changes and league initiatives, see the NFL Operations site.
For general league news and updates, explore the NFL Official Website.
Pass Completion Percentage: Prescott had one of the clearest upward trends, with shaky early weeks giving way to a strong finish, highlighted by some of his best accuracy of the year. Carr found a mid-season rhythm with several efficient performances before dipping late. Hurts was hot-and-cold, pairing sharp outings with noticeable late-season drops. Josh Allen was the most volatile, starting strong, hitting mid-season slumps, and rebounding with improved accuracy down the stretch.
Yards per Attempt: Josh Allen delivered the biggest rushing spikes early on before levelling into steadier week-to-week swings. Jalen Hurts ran with more control, mixing a few intense bursts with several low-yardage outings. Dak Prescott showed intermittent mobility, popping at times during the season but not consistently. Derek Carr had the bumpiest rushing output, marked by multiple near-zero weeks and only a handful of meaningful peaks.
| Stadium Type | Pct Of Plays Ending In Injury | Turf Type |
|---|---|---|
| Outdoor | 1.82% | Natural |
| Indoor Closed | 1.27% | Natural |
| Indoor Open | 2.14% | Natural |
| Outdoor | 2.45% | Artificial |
| Indoor Closed | 2.09% | Artificial |
| Indoor Open | 6.78% | Artificial |
Goal of the Barplot:
The first barplot shows which positions are most susceptible to injury and how the playing surface plays a role.
Key Findings:
- Cornerbacks, Tight Ends, Wide Receivers, and Running Backs have the highest injury percentages on artificial surfaces.
- Studies confirm that artificial turf intensifies lateral movement impacts, which these positions rely on most.
- On natural surfaces, all positions are far less likely to sustain injuries.
Stadium Insights (Table):
- Indoor open stadiums had the highest injury percentages, regardless of surface type.
- Across all stadium categories, artificial surfaces consistently produced higher injury rates.
Clear Takeaway:
A pivot to natural playing surfaces is necessary, with indoor closed stadiums emerging as the strongest option to reduce injury.
Overview:
These two graphs display the quarterback ratings of every qualified QB from the last ten years.
Qualification Rule:
To be included, a player must have at least 50 passing attempts in both outdoor and indoor stadiums.
Interpretation of the Graphs:
- Ratings are calculated by subtracting each QB’s outdoor rating from their indoor rating.
- Positive values → QB performs better indoors.
- Negative values → QB performs better outdoors.
Key Insight:
Playing indoors — without the impact of weather conditions — generally benefits quarterback performance.
RB Peak Age
27
WR Peak Age
21
QB Peak Age
32
Running Backs (Green): Peak early (Age 27) with steep decline.
Draft early, avoid long-term deals.
Quarterbacks (Blue): Peak late (Age 32) and stay efficient for 5+ years.
Reliable for multi-year contracts.
Wide Receivers (Orange): Peak young (Age 21) with gradual drop.
Moderate risk, watch for age-related fade.
Quarterbacks sustain peak efficiency 4–6 years longer than Running Backs. RBs often decline after age 25, while top QBs typically remain stable through age 32–34, with some elite performers extending even further.
Pre‑1979 Era:
Until 1979, teams generally opted to pass and run the ball equally.
1979 Rule Changes:
- Defensive Backs were restricted from making contact with receivers more than five yards downfield.
- Offensive Linemen were allowed to use their arms and open hands for pass blocking.
These changes led to an instant increase of ~50 passing yards per game in the following season (1980).
2000s Rule Change:
- The introduction of roughing the passer penalties provided quarterbacks with greater protection.
This resulted in a further increase in passing yard*, cementing the NFL’s shift toward a pass‑heavy offense.
This dashboard was created using Quarto in RStudio, and the R Language and Environment.
The datasets used to create this dashboard was downloaded from: - Kaggle NFL Statistics
- Pro Football Doc
- Sports Reference Stathead Split Finder
- Pro Football Reference Blog
- nflfastR package (open-source R data package for play-by-play NFL data)
Additional resources consulted:
- Next Gen Stats
- Philadelphia Eagles Official Site
- StatMuse NFL
- NFL Official Website - Copilot
Allaire J, Dervieux C (2024). quarto: R Interface to ‘Quarto’ Markdown Publishing System. R package version 1.4.4, https://CRAN.R-project.org/package=quarto.
Arnold J (2024). ggthemes: Extra Themes, Scales and Geoms for ‘ggplot2’. R package version 5.1.0, https://github.com/jrnold/ggthemes, https://jrnold.github.io/ggthemes/.
Bache S, Wickham H (2025). magrittr: A Forward-Pipe Operator for R. doi:10.32614/CRAN.package.magrittr https://doi.org/10.32614/CRAN.package.magrittr, R package version 2.0.4, https://CRAN.R-project.org/package=magrittr.
Dancho M, Vaughan D (2025). tidyquant: Tidy Quantitative Financial Analysis. doi:10.32614/CRAN.package.tidyquant https://doi.org/10.32614/CRAN.package.tidyquant, R package version 1.0.11, https://CRAN.R-project.org/package=tidyquant.
Firke S (2024). janitor: Simple Tools for Examining and Cleaning Dirty Data. R package version 2.2.1, https://github.com/sfirke/janitor.
Garrett Grolemund, Hadley Wickham (2011). Dates and Times Made Easy with lubridate. Journal of Statistical Software, 40(3), 1-25. URL https://www.jstatsoft.org/v40/i03/.
Ho T, Carl S (2025). nflreadr: Download ‘nflverse’ Data. R package version 1.5.0, https://nflreadr.nflverse.com.
Kunst J (2022). highcharter: A Wrapper for the ‘Highcharts’ Library. R package version 0.9.4, https://CRAN.R-project.org/package=highcharter.
Neuwirth E (2022). RColorBrewer: ColorBrewer Palettes. R package version 1.1-3, https://CRAN.R-project.org/package=RColorBrewer.
Posit team (2025). RStudio: Integrated Development Environment for R. Posit Software, PBC, Boston, MA. URL http://www.posit.co/.
R Core Team (2025). R: A Language and Environment for Statistical Computing. R Foundation for Statistical Computing, Vienna, Austria.https://www.R-project.org/.
Rinker, T. W. & Kurkiewicz, D. (2017). pacman: Package Management for R. version 0.5.0. Buffalo, New York. http://github.com/trinker/pacman
Wickham H, Averick M, Bryan J, Chang W, McGowan LD, François R, Grolemund G, Hayes A, Henry L, Hester J, Kuhn M, Pedersen TL, Miller E, Bache SM, Müller K, Ooms J, Robinson D, Seidel DP, Spinu V, Takahashi K, Vaughan D, Wilke C, Woo K, Yutani H (2019). “Welcome to the tidyverse.” Journal of Open Source Software, 4(43), 1686. doi:10.21105/joss.01686 https://doi.org/10.21105/joss.01686.
Xie Y (2025). knitr: A General-Purpose Package for Dynamic Report Generation in R. R package version 1.50, https://yihui.org/knitr/.
Yihui Xie (2015) Dynamic Documents with R and knitr. 2nd edition. Chapman and Hall/CRC. ISBN 978-1498716963
Yihui Xie (2014) knitr: A Comprehensive Tool for Reproducible Research in R. In Victoria Stodden, Friedrich Leisch and Roger D. Peng, editors, Implementing Reproducible Computational Research. Chapman and Hall/CRC. ISBN 978-1466561595
Zhu H (2024). kableExtra: Construct Complex Table with ‘kable’ and Pipe Syntax. R package version 1.4.0, https://github.com/haozhu233/kableExtra, http://haozhu233.github.io/kableExtra/.