rawData = read.csv("https://raw.githubusercontent.com/johnnyboy1287/chesstourney/main/chesstourney.txt")
RawMatrix <- matrix(,ncol=13)
RawMatrix2 <- matrix(,ncol=10)
Load info per player into matrix
library(stringr)
for(i in 4:nrow(rawData)){
if((i-1)%%3 == 0){
RawMatrix = rbind(RawMatrix,str_split_fixed(rawData[i,],"\\|",n=13))
}
}
RawMatrix1 = RawMatrix[2:65,]
## Load second row of info per player into matrix
for(i in 4:nrow(rawData)){
if((i-2)%%3 == 0){
RawMatrix2 = rbind(RawMatrix2,str_split_fixed(rawData[i,],"\\|",n=10))
}
}
RawMatrix2 = RawMatrix2[2:65,]
## Add additional info to matrix
for(i in 1:64){
RawMatrix1[i,11] = RawMatrix2[i,1]
RawMatrix1[i,12] = substring(RawMatrix2[i,2],16,19)
}
## Changing games to just player numbers
for(i in 1:64){
for(p in 4:10){
temp = str_extract(RawMatrix1[i,p], "\\d{1,2}")
RawMatrix1[i,p] = as.integer(temp)
}
}
Changing Matrix to Data Frame, Naming columns, and making all data
types int where applicable
TourneyDataFrame = as.data.frame(RawMatrix1)
names(TourneyDataFrame)[1] <- "Player#"
names(TourneyDataFrame)[2] <- "Name"
names(TourneyDataFrame)[3] <- "Points"
names(TourneyDataFrame)[4] <- "Game1 opp#"
names(TourneyDataFrame)[5] <- "Game2 opp#"
names(TourneyDataFrame)[6] <- "Game3 opp#"
names(TourneyDataFrame)[7] <- "Game4 opp#"
names(TourneyDataFrame)[8] <- "Game5 opp#"
names(TourneyDataFrame)[9] <- "Game6 opp#"
names(TourneyDataFrame)[10] <- "Game7 opp#"
names(TourneyDataFrame)[11] <- "State"
names(TourneyDataFrame)[12] <- "Rating"
names(TourneyDataFrame)[13] <- "Average Opp Rating"
TourneyDataFrameFinal <-TourneyDataFrame[,c(1,2,11,3,4,5,6,7,8,9,10,12,13)]
TourneyDataFrameFinal$'Game1 opp#' <-as.integer(TourneyDataFrameFinal$'Game1 opp#')
TourneyDataFrameFinal$'Game2 opp#' <-as.integer(TourneyDataFrameFinal$'Game2 opp#')
TourneyDataFrameFinal$'Game3 opp#' <-as.integer(TourneyDataFrameFinal$'Game3 opp#')
TourneyDataFrameFinal$'Game4 opp#' <-as.integer(TourneyDataFrameFinal$'Game4 opp#')
TourneyDataFrameFinal$'Game5 opp#' <-as.integer(TourneyDataFrameFinal$'Game5 opp#')
TourneyDataFrameFinal$'Game6 opp#' <-as.integer(TourneyDataFrameFinal$'Game6 opp#')
TourneyDataFrameFinal$'Game7 opp#' <-as.integer(TourneyDataFrameFinal$'Game7 opp#')
TourneyDataFrameFinal$'Rating' <-as.integer(TourneyDataFrameFinal$'Rating')
TourneyDataFrameFinal$'Average Opp Rating' <-as.integer(TourneyDataFrameFinal$'Average Opp Rating')
TourneyDataFrameFinal$'Points' <-as.double(TourneyDataFrameFinal$'Points')
TourneyDataFrameFinal$'Player#' <-as.integer(TourneyDataFrameFinal$'Player#')
Calculating average opponent rating and placing into data frame
for(i in 1:64) {
sum = 0
count = 0
for(p in 5:11) {
if(!is.na(TourneyDataFrameFinal[i,p])){
temp = TourneyDataFrameFinal[i,p]
temp = as.integer(temp)
count = count + 1
sum = sum + TourneyDataFrameFinal[temp,12]
}
if(p == 11){TourneyDataFrameFinal[i,13] = (sum/count)}
}
}
View the dataframe and export to csv command
head(TourneyDataFrameFinal)
## Player# Name State Points Game1 opp# Game2 opp#
## 1 1 GARY HUA ON 6.0 39 21
## 2 2 DAKSHESH DARURI MI 6.0 63 58
## 3 3 ADITYA BAJAJ MI 6.0 8 61
## 4 4 PATRICK H SCHILLING MI 5.5 23 28
## 5 5 HANSHI ZUO MI 5.5 45 37
## 6 6 HANSEN SONG OH 5.0 34 29
## Game3 opp# Game4 opp# Game5 opp# Game6 opp# Game7 opp# Rating
## 1 18 14 7 12 4 1794
## 2 4 17 16 20 7 1553
## 3 25 21 11 13 12 1384
## 4 2 26 5 19 1 1716
## 5 12 13 4 14 17 1655
## 6 11 35 10 27 21 1686
## Average Opp Rating
## 1 1605.286
## 2 1469.286
## 3 1563.571
## 4 1573.571
## 5 1500.857
## 6 1518.714
##write.csv(TourneyDataFrameFinal,"Path to export the DataFrame\\File Name.csv", row.names = FALSE)