The text file is loaded at this step.

ratings.table <- readLines("~/R_Studio_work/project_1/Project_1_table.txt")
## Warning in readLines("~/R_Studio_work/project_1/Project_1_table.txt"):
## incomplete final line found on '~/R_Studio_work/project_1/Project_1_table.txt'

The records for the first player is accessed by entering the player number ‘1’. This record consists of two rows.

row_pos <- grep(" 1 \\|", ratings.table)

The first and second row position values are saved to two separate variables.

selected_player_row <- ratings.table[row_pos]

selected_player_row_2nd_line <- ratings.table[row_pos + 1]

The name of the player is retrieved from the first row and added to the vector ‘player_s_name.’

col_1_name <- substr(selected_player_row, 9, 40)

player_s_name <- c()

player_s_name <- c(str_remove_all(col_1_name, " {2,}"))

Total points extracted and added to the ‘total_number_of_points’ vector.

col_1_decimal_num     <- substr(selected_player_row,  42, 44)

col_1_decimal_num <- as.double(col_1_decimal_num)

total_number_of_points <- c()
total_number_of_points <- c(col_1_decimal_num)

The players State is extracted from the second row of the record and added the ‘player_s_state’ vector.

player_s_state <- c()

player_s_state <- substr(selected_player_row_2nd_line,  4,  5)

The pre-rating is extracted from the second row, converted to an integer and added to the ‘player_s_pre_rating’ vector.

second_row_r_num <- substr(selected_player_row_2nd_line, 22, 29)
second_row_r_num <- as.integer(second_row_r_num)

player_s_pre_rating <- c()
player_s_pre_rating <- c(second_row_r_num)

The vector for the ‘Average Pre Chess Rating of Opponents’ is created.

average_opponent_ratings <- base::vector(mode = 'integer', length = 8)

The outcome if each round is extracted an later saved to ‘player_game_result’

col_1_game_result <- substr(selected_player_row,  48, 52)
col_2_game_result <- substr(selected_player_row,  54, 58)
col_3_game_result <- substr(selected_player_row,  60, 64)
col_4_game_result <- substr(selected_player_row,  66, 70)
col_5_game_result <- substr(selected_player_row,  72, 76)
col_6_game_result <- substr(selected_player_row,  78, 82)
col_7_game_result <- substr(selected_player_row,  84, 88)
player_game_result <- c(col_1_game_result, 
                        col_2_game_result, 
                        col_3_game_result, 
                        col_4_game_result, 
                        col_5_game_result, 
                        col_6_game_result, 
                        col_7_game_result)
for(i in 1:length(player_game_result)) {
  win_draw_lose <- substr(player_game_result[i], 1, 1)
  if ((win_draw_lose == "W") | (win_draw_lose == "D") | (win_draw_lose == "L")) {
    
    pair_num <- str_extract(player_game_result[i], "[(0-9)]{1,}")
    pair_num_space_pipe <-  c(" ", pair_num, "\\|")
    pair_num_search <- str_flatten(pair_num_space_pipe, collapse = " ")
    row_pos <- grep(pair_num_search, ratings.table)
    
    
    selected_player_row <- ratings.table[row_pos]
    selected_player_row_2nd_line <- ratings.table[row_pos + 1]
    
    col_1_name <- substr(selected_player_row, 9, 40)
    name_to_append <- str_remove_all(col_1_name, " {2,}")
    player_s_name <- c(player_s_name, name_to_append)
    
    state_to_append <- substr(selected_player_row_2nd_line,  4,  5)
    player_s_state  <- c(player_s_state, state_to_append)
    
    col_1_decimal_num     <- substr(selected_player_row,  42, 44)
    decimal_num_to_append <- as.double(col_1_decimal_num)
    total_number_of_points <- c(total_number_of_points, decimal_num_to_append)
    
    second_row_r_num <- substr(selected_player_row_2nd_line, 22, 26)
    r_num_to_append <- as.integer(second_row_r_num)
    player_s_pre_rating <- c(player_s_pre_rating, r_num_to_append)
    
    avg_from_element_2_up <- player_s_pre_rating[2:length(player_s_pre_rating)]
    average_pre_ratings <- as.integer(mean(avg_from_element_2_up))
    
    average_opponent_ratings[1] <- average_pre_ratings
    }

}
chess_stats <-  data.frame(player_s_name, 
                           player_s_state, 
                           total_number_of_points, 
                           player_s_pre_rating, 
                           average_opponent_ratings)
write.csv(chess_stats , "chess_stats.csv")