Project 1

any libraries need to be imported

library(readr)
library(stringr)
library(plyr)

Read from txt file and import

skipping 4 because of headers

importtxt <- read_lines("tournamentinfo.txt", skip=4)

Create empty data frame

playerbase is a data frame all players who participated

playerbase <- data.frame(PairNum=integer(),
                      PlayerName=character(),
                      PlayerState=character(),
                      TotalPoints=integer(),
                      PlayerPreRating=integer())

read, parse, load into df

using regex, we read and load data into the playerbase df

pair_num <- unlist(str_extract(unlist(str_extract_all(importtxt, pattern = "[:digit:]{1,}[:blank:](?=\\|)")), pattern = "[:digit:]{1,}"))

opo_tmp <- unlist(str_extract_all(importtxt, pattern ="(?<=\\|)[:blank:][:alpha:]{1,}[[:blank:](([:alpha:]*){1,}|([:alpha:]*\\-[:alpha:]*){1,}]*(?=\\|)"))
player_names <- trimws(unlist(str_extract(opo_tmp, pattern = "[:alpha:]{1,}[:blank:][:alpha:]+[[:blank:](([:alpha:]+)|([:alpha:]+\\-[:alpha:]+))]*")), "r")

player_state <- unlist(str_extract(unlist(str_extract_all(importtxt, pattern = "[:space:][:upper:]{2}[:blank:](?=\\|)")), pattern = "[:alpha:]{2}"))

total_points <- unlist(str_extract_all(importtxt, pattern = "[:digit:]\\.[:digit:]"))

player_prerating <- unlist(str_extract(unlist(str_extract_all(importtxt, pattern = "R\\:[:blank:]+\\d{1,4}")), pattern = "[:digit:]{1,4}"))

playerbase <- data.frame(pair_num,
                         player_names,
                         player_state,
                         total_points,
                         player_prerating)

get player opponents

opponentbase extracts the list of pair numbers of the oppoents that a single player went against and completed the match (win, draw, or lose)

tmp <- str_extract_all(importtxt, pattern = "(?<=\\|)(W|D|L)[:blank:]+[:digit:]+(?=\\|)")
tmp <- tmp[lapply(tmp,length)>0]
opponent_num <- str_extract_all(as.character(tmp), pattern = "[:digit:]+")

opponentbase <- list(pair_num,opponent_num)

get opponents ratings

avg_oppopreranking_all calculates the average rating of the all opponents that a player went up against

avg_oppopreranking_all <- vector('integer')

for (x in unlist(playerbase[[1]])) {
oppo_played <- playerbase[unlist(opponentbase[[2]][as.integer(x)]),]
oppo_prerankings <- strtoi(as.character(oppo_played$player_prerating))
avg_oppopreranking <- round(mean(oppo_prerankings), digits = 0)

avg_oppopreranking_all <- append(avg_oppopreranking_all,as.integer(avg_oppopreranking), after = length(avg_oppopreranking_all))
}

build export dataframe

prep data for exporting

export_df <- data.frame(PlayerName = player_names,
                        PlayerState = player_state,
                        TotalPoints = format(total_points, nsmall = 1),
                        PlayerPreRating = as.integer(player_prerating),
                        AvgPreRating_Opponents = avg_oppopreranking_all)

write to csv

export the data frame as

write.csv(export_df,'results.csv')