View Single Post
Old 04-06-2019, 06:03 PM   #682
stealofhome
Hall Of Famer
 
stealofhome's Avatar
 
Join Date: Apr 2014
Posts: 2,282
MLB All-Star selection

I'm admittedly new to all this so I'm sure there are much easier and cleaner ways to do this, but my way does what I want for now.

Code:
#library(readr)
#library(dplyr)
#library(tidyr)
#library(Hmisc)
#teams <- read_csv("Out of the Park Developments/OOTP Baseball 19/saved_games/OOTPLeagueReborn.lg/import_export/general/teams.csv")
#pos <- data.frame("posnum" = c(1,2,3,4,5,6,7,8,9),"posval" = c("P","C","1B","2B","3B","SS","LF","CF","RF"))

#import data (players_basic, players_value, players_career_pitching_stats, players_career_batting_stats)
players <- read_csv("Out of the Park Developments/OOTP Baseball 19/saved_games/OOTPLeagueReborn.lg/import_export/csv/players.csv")
players <- unite(players, name, c("first_name","last_name"), sep = " ")
players_career_pitching_stats <- read_csv("Out of the Park Developments/OOTP Baseball 19/saved_games/OOTPLeagueReborn.lg/import_export/csv/players_career_pitching_stats.csv")
players_value <- read_csv("Out of the Park Developments/OOTP Baseball 19/saved_games/OOTPLeagueReborn.lg/import_export/csv/players_value.csv")
players_career_batting_stats <- read_csv("Out of the Park Developments/OOTP Baseball 19/saved_games/OOTPLeagueReborn.lg/import_export/csv/players_career_batting_stats.csv")

#Reduce pitching data to MLB in current year
pas <- players_career_pitching_stats %>% 
  select(player_id, year, league_id, team_id, split_id, bf, gs, wpa, war) %>% 
  filter(league_id=='100' & split_id=='1'& year==max(year)) %>%
  merge(players[ , c("player_id", "name")], by = "player_id") %>% 
  merge(players_value[ , c("player_id", "pot")], by = "player_id") %>% 
  merge(teams[ , c("team_id", "sub_league_id")], by = "team_id") %>% 
  mutate(sprank = wpa+2*war,
         rprank = 2*wpa+war)

#select top 6 SP and top 4 RP for AL and NL
ALAS <- pas %>% 
  filter(gs!='0' & sub_league_id =='0') %>% 
  select(player_id, name, sprank, war) %>% 
  arrange(desc(sprank)) %>%
  top_n(6,sprank) %>% 
  mutate(pos="SP") %>% 
  rename(rank = sprank)

ALAS <- pas %>% 
  filter(gs=='0' & wpa>'0' & sub_league_id =='0') %>% 
  select(player_id, name, rprank, war) %>% 
  arrange(desc(rprank)) %>% 
  top_n(4,rprank) %>% 
  mutate(pos="RP") %>% 
  rename(rank = rprank) %>% 
  bind_rows(ALAS, .)

NLAS <- pas %>% 
  filter(gs!='0' & sub_league_id =='1') %>% 
  select(player_id, name, sprank, war) %>% 
  arrange(desc(sprank)) %>%
  top_n(6,sprank) %>% 
  mutate(pos="SP") %>% 
  rename(rank = sprank)

NLAS <- pas %>% 
  filter(gs=='0' & wpa>'0' & sub_league_id =='1') %>% 
  select(player_id, name, rprank, war) %>% 
  arrange(desc(rprank)) %>% 
  top_n(4,rprank) %>% 
  mutate(pos="RP") %>% 
  rename(rank = rprank) %>% 
  bind_rows(NLAS, .)

#Filter batter data
bas <- players_career_batting_stats %>% 
  select(player_id, year, league_id, team_id, split_id, pa, wpa, war) %>% 
  filter(league_id=='100' & split_id=='1'& year==max(year)) %>%
  merge(players[ , c("player_id", "name", "position")], by = "player_id") %>% 
  merge(players_value[ , c("player_id", "pot")], by = "player_id") %>% 
  merge(teams[ , c("team_id", "sub_league_id")], by = "team_id") %>% 
  mutate(brank = wpa+2*war)

#select top 2 C and top 1 for every other position
ALAS <- bas %>% 
  filter(position=='2' & sub_league_id =='0') %>% 
  select(player_id, name, brank, war) %>% 
  arrange(desc(brank)) %>% 
  top_n(2,brank) %>% 
  mutate(pos="C") %>% 
  rename(rank = brank) %>% 
  bind_rows(ALAS, .)

ALAS <- bas %>% 
  filter(position=='3' & sub_league_id =='0') %>% 
  select(player_id, name, brank, war) %>% 
  arrange(desc(brank)) %>% 
  top_n(1,brank) %>% 
  mutate(pos="1B") %>% 
  rename(rank = brank) %>% 
  bind_rows(ALAS, .)

ALAS <- bas %>% 
  filter(position=='4' & sub_league_id =='0') %>% 
  select(player_id, name, brank, war) %>% 
  arrange(desc(brank)) %>% 
  top_n(1,brank) %>% 
  mutate(pos="2B") %>% 
  rename(rank = brank) %>% 
  bind_rows(ALAS, .)

ALAS <- bas %>% 
  filter(position=='5' & sub_league_id =='0') %>% 
  select(player_id, name, brank, war) %>% 
  arrange(desc(brank)) %>% 
  top_n(1,brank) %>% 
  mutate(pos="3B") %>% 
  rename(rank = brank) %>% 
  bind_rows(ALAS, .)

ALAS <- bas %>% 
  filter(position=='6' & sub_league_id =='0') %>% 
  select(player_id, name, brank, war) %>% 
  arrange(desc(brank)) %>% 
  top_n(1,brank) %>% 
  mutate(pos="SS") %>% 
  rename(rank = brank) %>% 
  bind_rows(ALAS, .)

ALAS <- bas %>% 
  filter(position=='7' & sub_league_id =='0') %>% 
  select(player_id, name, brank, war) %>% 
  arrange(desc(brank)) %>% 
  top_n(1,brank) %>% 
  mutate(pos="LF") %>% 
  rename(rank = brank) %>% 
  bind_rows(ALAS, .)

ALAS <- bas %>% 
  filter(position=='8' & sub_league_id =='0') %>% 
  select(player_id, name, brank, war) %>% 
  arrange(desc(brank)) %>% 
  top_n(1,brank) %>% 
  mutate(pos="CF") %>% 
  rename(rank = brank) %>% 
  bind_rows(ALAS, .)

ALAS <- bas %>% 
  filter(position=='9' & sub_league_id =='0') %>% 
  select(player_id, name, brank, war) %>% 
  arrange(desc(brank)) %>% 
  top_n(1,brank) %>% 
  mutate(pos="RF") %>% 
  rename(rank = brank) %>% 
  bind_rows(ALAS, .)

#filter out hitters already selected to all-star game
lasth <- anti_join(bas, ALAS, by=c("brank"= "rank"))

#select top 6 players not already selected
ALAS <- lasth %>% 
  filter(sub_league_id =='0') %>%
  select(player_id, name, brank, war) %>% 
  arrange(desc(brank)) %>% 
  top_n(6,brank) %>% 
  mutate(pos="H") %>% 
  rename(rank = brank) %>% 
  bind_rows(ALAS, .)

#select top 2 C and top 1 for every other position
NLAS <- bas %>% 
  filter(position=='2' & sub_league_id =='1') %>% 
  select(player_id, name, brank, war) %>% 
  arrange(desc(brank)) %>% 
  top_n(2,brank) %>% 
  mutate(pos="C") %>% 
  rename(rank = brank) %>% 
  bind_rows(NLAS, .)

NLAS <- bas %>% 
  filter(position=='3' & sub_league_id =='1') %>% 
  select(player_id, name, brank, war) %>% 
  arrange(desc(brank)) %>% 
  top_n(1,brank) %>% 
  mutate(pos="1B") %>% 
  rename(rank = brank) %>% 
  bind_rows(NLAS, .)

NLAS <- bas %>% 
  filter(position=='4' & sub_league_id =='1') %>% 
  select(player_id, name, brank, war) %>% 
  arrange(desc(brank)) %>% 
  top_n(1,brank) %>% 
  mutate(pos="2B") %>% 
  rename(rank = brank) %>% 
  bind_rows(NLAS, .)

NLAS <- bas %>% 
  filter(position=='5' & sub_league_id =='1') %>% 
  select(player_id, name, brank, war) %>% 
  arrange(desc(brank)) %>% 
  top_n(1,brank) %>% 
  mutate(pos="3B") %>% 
  rename(rank = brank) %>% 
  bind_rows(NLAS, .)

NLAS <- bas %>% 
  filter(position=='6' & sub_league_id =='1') %>% 
  select(player_id, name, brank, war) %>% 
  arrange(desc(brank)) %>% 
  top_n(1,brank) %>% 
  mutate(pos="SS") %>% 
  rename(rank = brank) %>% 
  bind_rows(NLAS, .)

NLAS <- bas %>% 
  filter(position=='7' & sub_league_id =='1') %>% 
  select(player_id, name, brank, war) %>% 
  arrange(desc(brank)) %>% 
  top_n(1,brank) %>% 
  mutate(pos="LF") %>% 
  rename(rank = brank) %>% 
  bind_rows(NLAS, .)

NLAS <- bas %>% 
  filter(position=='8' & sub_league_id =='1') %>% 
  select(player_id, name, brank, war) %>% 
  arrange(desc(brank)) %>% 
  top_n(1,brank) %>% 
  mutate(pos="CF") %>% 
  rename(rank = brank) %>% 
  bind_rows(NLAS, .)

NLAS <- bas %>% 
  filter(position=='9' & sub_league_id =='1') %>% 
  select(player_id, name, brank, war) %>% 
  arrange(desc(brank)) %>% 
  top_n(1,brank) %>% 
  mutate(pos="RF") %>% 
  rename(rank = brank) %>% 
  bind_rows(NLAS, .)

#filter out hitters already selected to all-star game
lasth <- anti_join(bas, NLAS, by=c("brank"= "rank"))

#select top 6 players not already selected
NLAS <- lasth %>% 
  filter(sub_league_id =='1') %>%
  select(player_id, name, brank, war) %>% 
  arrange(desc(brank)) %>% 
  top_n(6,brank) %>% 
  mutate(pos="H") %>% 
  rename(rank = brank) %>% 
  bind_rows(NLAS, .)

#create AL table for export to forum
ALASF <- ALAS %>% 
  select(player_id, name, war) %>% 
  merge(players[ , c("player_id", "position", "team_id")], by = "player_id") %>%
  merge(pos[ , c("posnum","posval")], by.x='position', by.y = 'posnum') %>%
  merge(teams[ , c("team_id", "abbr")], by = "team_id") %>% 
  select(c(6,4,5,7)) %>% 
  mutate(war = round(war, digits = 2)) %>% 
  rename(position = posval, team = abbr) %>% 
  arrange(desc(war))

#create NL table for export to forum
NLASF <- NLAS %>% 
  select(player_id, name, war) %>% 
  merge(players[ , c("player_id", "position", "team_id")], by = "player_id") %>%
  merge(pos[ , c("posnum","posval")], by.x='position', by.y = 'posnum') %>%
  merge(teams[ , c("team_id", "abbr")], by = "team_id") %>% 
  select(c(6,4,5,7)) %>% 
  mutate(war = round(war, digits = 2)) %>% 
  rename(position = posval, team = abbr) %>% 
  arrange(desc(war))

#Create tables to use for in-game voting
ALAS <- ALAS %>% 
  separate(name, c("first","last"), sep = " ") %>% 
  arrange(last) %>% 
  unite("name", c("first", "last"), sep = " ") %>% 
  select(name)

NLAS <- NLAS %>% 
  separate(name, c("first","last"), sep = " ") %>% 
  arrange(last) %>% 
  unite("name", c("first", "last"), sep = " ") %>% 
  select(name)

View(ALAS)
View(NLAS)

#send AL and NL tables to clipboard
#write_clip(ALASF)
#write_clip(NLASF)
stealofhome is offline   Reply With Quote