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

Code:

# ----------------------------------------------------------
# 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
# 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)

# ----------------------------------------------------------
# Create summary table by position
# ----------------------------------------------------------

basketball_players_summary <- basketball_players %>%
  group_by(Position) %>%
  summarise(
    Count   = n(),
    Minimum = round(min(FG_Percentage), 1),
    Average = round(mean(FG_Percentage), 1),
    Maximum = round(max(FG_Percentage), 1)
  ) %>%
  arrange(desc(Average))   # Sort by Average (descending)

# ----------------------------------------------------------
# Displaying the new summary table
# ----------------------------------------------------------

basketball_players_table <- gt(basketball_players_summary) %>%
  tab_header(title = "Player stats by position") %>%
  cols_align(align = "left")

basketball_players_table