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