| 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