Table
FG Stats by Position | ||||
Position | Count | Minimum | Average | Maximum |
---|---|---|---|---|
Forward | 4 | 50.90 | 54.25 | 59.10 |
Guard | 4 | 46.60 | 52.90 | 58.00 |
Center | 4 | 40.80 | 50.85 | 59.90 |
Code
# Installing and loading required packages
if (!require("tidyverse"))
install.packages("tidyverse")
if (!require("gtExtras"))
install.packages("gtExtras")
library(tidyverse)
library(gtExtras)
# Installing and loading required packages
if (!require("tidyverse"))
install.packages("tidyverse")
if (!require("gtExtras"))
install.packages("gtExtras")
library(tidyverse)
library(gtExtras)
# Specify made-up data for 12 players and turn it into a data frame
# Note: I used ChatGPT to help generate this data
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 data by Position
Position_summary <- basketball_players %>%
group_by(Position) %>%
summarize(
Count = n(),
Min_FG = min(FG_Percentage),
Avg_FG = mean(FG_Percentage),
Max_FG = max(FG_Percentage),
.groups = "drop"
) %>%
arrange(desc(Avg_FG))
# Making the table
Position_table <- gt(Position_summary) %>%
tab_header(title = "FG Stats by Position") %>%
cols_align(align = "left") %>%
cols_label(
Position = "Position",
Count = "Count",
Min_FG = "Minimum",
Avg_FG = "Average",
Max_FG = "Maximum"
) %>%
fmt_number(columns = c(Min_FG, Avg_FG, Max_FG), decimals = 2) %>%
gt_theme_538()
# Showing the table
Position_table