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)