## 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
## Loading required package: gtExtras
## 
## Loading required package: gt
Team Field Goal 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
# 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
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)

# Create the initial dataframe
basketball_players <- data.frame(Player, Position, FG_Percentage)

# Calculate the average FG_Percentage for the whole team
FG_Average <- mean(basketball_players$FG_Percentage)

# Add a new column to categorize each player's FG_Percentage relative to the team's average
basketball_players <- basketball_players %>%
  mutate(FG_Category = case_when(
    FG_Percentage < FG_Average ~ "Below average",
    FG_Percentage == FG_Average ~ "Average",
    FG_Percentage > FG_Average ~ "Above average"
  ))

# Now, summarize the data by position: calculate the min, average, and max FG percentage
summary_table <- basketball_players %>%
  group_by(Position) %>%  # Group by Position
  summarize(
    Minimum = min(FG_Percentage),  # Calculate minimum FG_Percentage for each position
    Average = mean(FG_Percentage),  # Calculate average FG_Percentage for each position
    Maximum = max(FG_Percentage),  # Calculate maximum FG_Percentage for each position
    COUNT = n()  # Count the number of players in each position
  ) %>%
  arrange(desc(Average)) %>%  # Sort by average FG_Percentage in descending order
  select(Position, COUNT, Minimum, Average, Maximum)  # Rearrange the columns

# Create the table with the summarized data
Player_table <- gt(summary_table) %>%
  tab_header("Team Field Goal Stats by Position") %>%
  cols_align(align = "left") %>%
  gt_theme_538()

# Display the table
Player_table