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")