Summary of Field Goal Stats by Position
# Installing and loading required packages
if (!require("tidyverse")) install.packages("tidyverse")
## Loading required package: tidyverse
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.0.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
if (!require("gt")) install.packages("gt")
## Loading required package: gt
library(tidyverse)
library(gt)
# Specify made-up data for 12 players and turn it into a data frame
Player <- c(
"Player 1", "Player 2", "Player 3", "Player 4", "Player 5", "Player 6",
"Player 7", "Player 8", "Player 9", "Player 10", "Player 11", "Player 12"
)
Position <- c(
"Guard", "Center", "Center", "Guard", "Forward", "Center",
"Forward", "Guard", "Center", "Forward", "Guard", "Forward"
)
FG_Percentage <- c(58.0, 44.9, 40.8, 46.6, 59.1, 57.8, 53.9, 52.8, 59.9, 53.1, 54.2, 50.9)
basketball_players <- data.frame(Player, Position, FG_Percentage)
# Summarizing field goal stats by position
fg_stats <- basketball_players %>%
group_by(Position) %>%
summarise(
Count = n(),
Minimum = min(FG_Percentage),
Average = mean(FG_Percentage),
Maximum = max(FG_Percentage)
) %>%
arrange(desc(Average))
# Creating and displaying the table
fg_stats %>%
gt() %>%
tab_header(title = "FG stats by position")
FG stats by position |
Position |
Count |
Minimum |
Average |
Maximum |
Forward |
4 |
50.9 |
54.25 |
59.1 |
Guard |
4 |
46.6 |
52.90 |
58.0 |
Center |
4 |
40.8 |
50.85 |
59.9 |