Player stats by position
Position Count Minimum Average Maximum
Forward 4 50.9 54.2 59.1
Guard 4 46.6 52.9 58.0
Center 4 40.8 50.8 59.9
# ----------------------------------------------------------
# Installing required packages
# ----------------------------------------------------------

if(!require("tidyverse"))
  install.packages("tidyverse")

if(!require("gt"))
  install.packages("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)

# ----------------------------------------------------------
# Summarize field goal stats by position
# ----------------------------------------------------------

fg_summary <- basketball_players %>%
  group_by(Position) %>%
  summarise(
    Count = n(),
    Minimum = min(FG_Percentage),
    Average = mean(FG_Percentage),
    Maximum = max(FG_Percentage),
    .groups = "drop"
  ) %>%
  arrange(desc(Average)) %>%   # Sort descending by Average
  mutate(across(c(Minimum, Average, Maximum), ~ round(.x, 1)))

# ----------------------------------------------------------
# Create and display formatted gt table
# ----------------------------------------------------------

fg_summary_table <- fg_summary %>%
  gt() %>%
  tab_header(
    title = "Player stats by position"
  ) %>%
  cols_align(
    align = "left",
    columns = Position
  ) %>%
  cols_align(
    align = "center",
    columns = c(Count, Minimum, Average, Maximum)
  )

fg_summary_table