Project 1

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

Loading file

chg <- read_file("https://raw.githubusercontent.com/AlainKuiete/DATA607/master/tournamentinfo.txt")

Splitting the 89 dashes(From DanFanelli.DA607.Project.rmd)

chess.game <- unlist(strsplit(chg, "-{89}"))
chess_row <- c(rep(0,64))
for (chess_index in 3:length(chess.game)) {
  chess_row[chess_index-2] <- chess.game[chess_index]
}

Suppressing | and other characters

  chess.round <- matrix(rep(""),nrow = 64,ncol = 12, byrow = TRUE)
  for (i in 1:64) {
    for (j in 1:12) {
      chess.round[i,j] <- unlist(strsplit(chess_row, "\\|")[i])[j]
    }
  }
  
  
  to_remove <- c("\r\n", "W", "D", "L", "U", "H", "B", "X", " ")
  for (lr in to_remove) {
    chess.round[1:64,c(1,3:11)] <- aaply(chess.round[1:64,c(1,3:11)],1,str_remove_all, lr)
  }

Player pre-rating

 pre.rating <- unlist(str_extract_all(chg, "\\d{3,}"))
  pre.rating <- pre.rating[seq(2, 192, 3)]
  chess.round[,12 ] <- pre.rating
      
  chess.round[1:64,2] <- str_trim(chess.round[1:64,2])

Creating a character dataframe

  chess_games <- data.frame(num = strtoi(chess.round[,1]), 
                            player.name = chess.round[,2],
                            state =  chess.round[,11],
                            pts = as.numeric(chess.round[,3]),
                            rating = strtoi(chess.round[,12]), 
                            opp.num1 = as.numeric(chess.round[,4]),
                            opp.num2 = as.numeric(chess.round[,5]),
                            opp.num3 = as.numeric(chess.round[,6]),
                            opp.num4 = as.numeric(chess.round[,7]),
                            opp.num5 = as.numeric(chess.round[,8]),
                            opp.num6 = as.numeric(chess.round[,9]),
                            opp.num7 = as.numeric(chess.round[,10])
                            )

Computation of the average rating

av_rating <- c(rep(0,64))
  for (i in 1:64) {
    av_rating[i] <- mean(c(chess_games$num[chess_games$opp.num1[i]],
                        chess_games$rating[chess_games$opp.num2[i]],
                        chess_games$rating[chess_games$opp.num3[i]],
                        chess_games$rating[chess_games$opp.num4[i]],
                        chess_games$rating[chess_games$opp.num5[i]],
                        chess_games$rating[chess_games$opp.num6[i]],
                        chess_games$rating[chess_games$opp.num7[i]]),
                        na.rm =TRUE)
  }

Result

  chess.games <- data.frame(Player.name = chess_games$player.name,
                            State = chess_games$state,
                            rating = chess_games$rating,
                            op.rating = round(av_rating))
  
  head(chess.games)
##           Player.name State rating op.rating
## 1            GARY HUA    ON   1794      1406
## 2     DAKSHESH DARURI    MI   1553      1310
## 3        ADITYA BAJAJ    MI   1384      1330
## 4 PATRICK H SCHILLING    MI   1716      1382
## 5          HANSHI ZUO    MI   1655      1330
## 6         HANSEN SONG     O   1686      1324

Writing the csv file

write.csv(chess.games,file = "chess_game_rating.csv")