Overview

We are given a text file, tournamentinfo.txt, which has a table of data from a chess tournament. The data includes the 64 contestants’ name, state they are from, total points scored, their pre-rating, and the results of the matches of who they played against. I read the file into R using readLines, then extracted the names, states, points, and pre-ratings using regular expressions and stringr. To calculate the opponent pre-rating average, I extracted a list of each player’s opponents by number. I then looped through the list, taking the mean of the opponents’ pre-rating for each individual player. I then saved the data frame in csv format as tournamentinfo.csv.

R Markdown

text = readLines('tournamentinfo.txt')

#Remove the Header
text = text[5: 195]

#Isolate lines from the text file containing the player names
names_lines = text[seq(1, 192, 3)]

pacman::p_load(stringr)

names = str_extract_all(names_lines, "[A-Z]*[[:space:]]+[A-Z]*[[:space:]]*[A-Z]*[[:space:]]*[A-Z]+")
names = unlist(names)
names
##  [1] " GARY HUA"                 " DAKSHESH DARURI"         
##  [3] " ADITYA BAJAJ"             " PATRICK H SCHILLING"     
##  [5] " HANSHI ZUO"               " HANSEN SONG"             
##  [7] " GARY DEE SWATHELL"        " EZEKIEL HOUGHTON"        
##  [9] " STEFANO LEE"              " ANVIT RAO"               
## [11] " CAMERON WILLIAM MCLEMAN"  " KENNETH J TACK"          
## [13] " TORRANCE HENRY JR"        " BRADLEY SHAW"            
## [15] " ZACHARY JAMES HOUGHTON"   " MIKE NIKITIN"            
## [17] " RONALD GRZEGORCZYK"       " DAVID SUNDEEN"           
## [19] " DIPANKAR ROY"             " JASON ZHENG"             
## [21] " DINH DANG BUI"            " EUGENE L MCCLURE"        
## [23] " ALAN BUI"                 " MICHAEL R ALDRICH"       
## [25] " LOREN SCHWIEBERT"         " MAX ZHU"                 
## [27] " GAURAV GIDWANI"           " SOFIA ADINA STANESCU"    
## [29] " CHIEDOZIE OKORIE"         " GEORGE AVERY JONES"      
## [31] " RISHI SHETTY"             " JOSHUA PHILIP MATHEWS"   
## [33] " JADE GE"                  " MICHAEL JEFFERY THOMAS"  
## [35] " JOSHUA DAVID LEE"         " SIDDHARTH JHA"           
## [37] " AMIYATOSH PWNANANDAM"     " BRIAN LIU"               
## [39] " JOEL R HENDON"            " FOREST ZHANG"            
## [41] " KYLE WILLIAM MURPHY"      " JARED GE"                
## [43] " ROBERT GLEN VASEY"        " JUSTIN D SCHILLING"      
## [45] " DEREK YAN"                " JACOB ALEXANDER LAVALLEY"
## [47] " ERIC WRIGHT"              " DANIEL KHAIN"            
## [49] " MICHAEL J MARTIN"         " SHIVAM JHA"              
## [51] " TEJAS AYYAGARI"           " ETHAN GUO"               
## [53] " JOSE C YBARRA"            " LARRY HODGE"             
## [55] " ALEX KONG"                " MARISA RICCI"            
## [57] " MICHAEL LU"               " VIRAJ MOHILE"            
## [59] " SEAN M MCCORMICK"         " JULIA SHEN"              
## [61] " JEZZEL FARKAS"            " ASHWIN BALAJI"           
## [63] " THOMAS JOSEPH HOSMER"     " BEN LI"
names = tolower(names)

simpleCap <- function(x) {
  s <- strsplit(x, " ")[[1]]
  paste(toupper(substring(s, 1,1)), substring(s, 2),
      sep="", collapse=" ")
}

names = lapply(names, simpleCap)
names = unlist(names)

names
##  [1] " Gary Hua"                 " Dakshesh Daruri"         
##  [3] " Aditya Bajaj"             " Patrick H Schilling"     
##  [5] " Hanshi Zuo"               " Hansen Song"             
##  [7] " Gary Dee Swathell"        " Ezekiel Houghton"        
##  [9] " Stefano Lee"              " Anvit Rao"               
## [11] " Cameron William Mcleman"  " Kenneth J Tack"          
## [13] " Torrance Henry Jr"        " Bradley Shaw"            
## [15] " Zachary James Houghton"   " Mike Nikitin"            
## [17] " Ronald Grzegorczyk"       " David Sundeen"           
## [19] " Dipankar Roy"             " Jason Zheng"             
## [21] " Dinh Dang Bui"            " Eugene L Mcclure"        
## [23] " Alan Bui"                 " Michael R Aldrich"       
## [25] " Loren Schwiebert"         " Max Zhu"                 
## [27] " Gaurav Gidwani"           " Sofia Adina Stanescu"    
## [29] " Chiedozie Okorie"         " George Avery Jones"      
## [31] " Rishi Shetty"             " Joshua Philip Mathews"   
## [33] " Jade Ge"                  " Michael Jeffery Thomas"  
## [35] " Joshua David Lee"         " Siddharth Jha"           
## [37] " Amiyatosh Pwnanandam"     " Brian Liu"               
## [39] " Joel R Hendon"            " Forest Zhang"            
## [41] " Kyle William Murphy"      " Jared Ge"                
## [43] " Robert Glen Vasey"        " Justin D Schilling"      
## [45] " Derek Yan"                " Jacob Alexander Lavalley"
## [47] " Eric Wright"              " Daniel Khain"            
## [49] " Michael J Martin"         " Shivam Jha"              
## [51] " Tejas Ayyagari"           " Ethan Guo"               
## [53] " Jose C Ybarra"            " Larry Hodge"             
## [55] " Alex Kong"                " Marisa Ricci"            
## [57] " Michael Lu"               " Viraj Mohile"            
## [59] " Sean M Mccormick"         " Julia Shen"              
## [61] " Jezzel Farkas"            " Ashwin Balaji"           
## [63] " Thomas Joseph Hosmer"     " Ben Li"
chess = data.frame(Name = names)
states_lines = text[seq(2, 192, 3)]
states = str_extract_all(states_lines, "[A-Z]{2,}")

states = unlist(states)
states
##  [1] "ON" "MI" "MI" "MI" "MI" "OH" "MI" "MI" "ON" "MI" "MI" "MI" "MI" "MI" "MI"
## [16] "MI" "MI" "MI" "MI" "MI" "ON" "MI" "ON" "MI" "MI" "ON" "MI" "MI" "MI" "ON"
## [31] "MI" "ON" "MI" "MI" "MI" "MI" "MI" "MI" "MI" "MI" "MI" "MI" "MI" "MI" "MI"
## [46] "MI" "MI" "MI" "MI" "MI" "MI" "MI" "MI" "MI" "MI" "MI" "MI" "MI" "MI" "MI"
## [61] "ON" "MI" "MI" "MI"
chess$State = states
names_lines
##  [1] "    1 | GARY HUA                        |6.0  |W  39|W  21|W  18|W  14|W   7|D  12|D   4|"
##  [2] "    2 | DAKSHESH DARURI                 |6.0  |W  63|W  58|L   4|W  17|W  16|W  20|W   7|"
##  [3] "    3 | ADITYA BAJAJ                    |6.0  |L   8|W  61|W  25|W  21|W  11|W  13|W  12|"
##  [4] "    4 | PATRICK H SCHILLING             |5.5  |W  23|D  28|W   2|W  26|D   5|W  19|D   1|"
##  [5] "    5 | HANSHI ZUO                      |5.5  |W  45|W  37|D  12|D  13|D   4|W  14|W  17|"
##  [6] "    6 | HANSEN SONG                     |5.0  |W  34|D  29|L  11|W  35|D  10|W  27|W  21|"
##  [7] "    7 | GARY DEE SWATHELL               |5.0  |W  57|W  46|W  13|W  11|L   1|W   9|L   2|"
##  [8] "    8 | EZEKIEL HOUGHTON                |5.0  |W   3|W  32|L  14|L   9|W  47|W  28|W  19|"
##  [9] "    9 | STEFANO LEE                     |5.0  |W  25|L  18|W  59|W   8|W  26|L   7|W  20|"
## [10] "   10 | ANVIT RAO                       |5.0  |D  16|L  19|W  55|W  31|D   6|W  25|W  18|"
## [11] "   11 | CAMERON WILLIAM MCLEMAN        |4.5  |D  38|W  56|W   6|L   7|L   3|W  34|W  26|" 
## [12] "   12 | KENNETH J TACK                  |4.5  |W  42|W  33|D   5|W  38|5    |D   1|L   3|"
## [13] "   13 | TORRANCE HENRY JR               |4.5  |W  36|W  27|L   7|D   5|W  33|L   3|W  32|"
## [14] "   14 | BRADLEY SHAW                    |4.5  |W  54|W  44|W   8|L   1|D  27|L   5|W  31|"
## [15] "   15 | ZACHARY JAMES HOUGHTON          |4.5  |D  19|L  16|W  30|L  22|W  54|W  33|W  38|"
## [16] "   16 | MIKE NIKITIN                    |4.0  |D  10|W  15|H    |W  39|L   2|W  36|U    |"
## [17] "   17 | RONALD GRZEGORCZYK              |4.0  |W  48|W  41|L  26|L   2|W  23|W  22|L   5|"
## [18] "   18 | DAVID SUNDEEN                   |4.0  |W  47|W   9|L   1|W  32|L  19|W  38|L  10|"
## [19] "   19 | DIPANKAR ROY                    |4.0  |D  15|W  10|W  52|D  28|W  18|L   4|L   8|"
## [20] "   20 | JASON ZHENG                     |4.0  |L  40|W  49|W  23|W  41|W  28|L   2|L   9|"
## [21] "   21 | DINH DANG BUI                   |4.0  |W  43|L   1|W  47|L   3|W  40|W  39|L   6|"
## [22] "   22 | EUGENE L MCCLURE                |4.0  |W  64|D  52|L  28|W  15|H    |L  17|W  40|"
## [23] "   23 | ALAN BUI                        |4.0  |L   4|W  43|L  20|W  58|L  17|W  37|W  46|"
## [24] "   24 | MICHAEL R ALDRICH               |4.0  |L  28|L  47|W  43|L  25|W  60|W  44|W  39|"
## [25] "   25 | LOREN SCHWIEBERT                |3.5  |L   9|W  53|L   3|W  24|D  34|L  10|W  47|"
## [26] "   26 | MAX ZHU                         |3.5  |W  49|W  40|W  17|L   4|L   9|D  32|L  11|"
## [27] "   27 | GAURAV GIDWANI                  |3.5  |W  51|L  13|W  46|W  37|D  14|L   6|U    |"
## [28] "   28 | SOFIA ADINA STANESCU-BELLU      |3.5  |W  24|D   4|W  22|D  19|L  20|L   8|D  36|"
## [29] "   29 | CHIEDOZIE OKORIE                |3.5  |W  50|D   6|L  38|L  34|W  52|W  48|U    |"
## [30] "   30 | GEORGE AVERY JONES              |3.5  |L  52|D  64|L  15|W  55|L  31|W  61|W  50|"
## [31] "   31 | RISHI SHETTY                    |3.5  |L  58|D  55|W  64|L  10|W  30|W  50|L  14|"
## [32] "   32 | JOSHUA PHILIP MATHEWS           |3.5  |W  61|L   8|W  44|L  18|W  51|D  26|L  13|"
## [33] "   33 | JADE GE                         |3.5  |W  60|L  12|W  50|D  36|L  13|L  15|W  51|"
## [34] "   34 | MICHAEL JEFFERY THOMAS          |3.5  |L   6|W  60|L  37|W  29|D  25|L  11|W  52|"
## [35] "   35 | JOSHUA DAVID LEE                |3.5  |L  46|L  38|W  56|L   6|W  57|D  52|W  48|"
## [36] "   36 | SIDDHARTH JHA                   |3.5  |L  13|W  57|W  51|D  33|H    |L  16|D  28|"
## [37] "   37 | AMIYATOSH PWNANANDAM            |3.5  |B    |L   5|W  34|L  27|H    |L  23|W  61|"
## [38] "   38 | BRIAN LIU                       |3.0  |D  11|W  35|W  29|L  12|H    |L  18|L  15|"
## [39] "   39 | JOEL R HENDON                   |3.0  |L   1|W  54|W  40|L  16|W  44|L  21|L  24|"
## [40] "   40 | FOREST ZHANG                    |3.0  |W  20|L  26|L  39|W  59|L  21|W  56|L  22|"
## [41] "   41 | KYLE WILLIAM MURPHY             |3.0  |W  59|L  17|W  58|L  20|X    |U    |U    |"
## [42] "   42 | JARED GE                        |3.0  |L  12|L  50|L  57|D  60|D  61|W  64|W  56|"
## [43] "   43 | ROBERT GLEN VASEY               |3.0  |L  21|L  23|L  24|W  63|W  59|L  46|W  55|"
## [44] "   44 | JUSTIN D SCHILLING              |3.0  |B    |L  14|L  32|W  53|L  39|L  24|W  59|"
## [45] "   45 | DEREK YAN                       |3.0  |L   5|L  51|D  60|L  56|W  63|D  55|W  58|"
## [46] "   46 | JACOB ALEXANDER LAVALLEY        |3.0  |W  35|L   7|L  27|L  50|W  64|W  43|L  23|"
## [47] "   47 | ERIC WRIGHT                     |2.5  |L  18|W  24|L  21|W  61|L   8|D  51|L  25|"
## [48] "   48 | DANIEL KHAIN                    |2.5  |L  17|W  63|H    |D  52|H    |L  29|L  35|"
## [49] "   49 | MICHAEL J MARTIN                |2.5  |L  26|L  20|D  63|D  64|W  58|H    |U    |"
## [50] "   50 | SHIVAM JHA                      |2.5  |L  29|W  42|L  33|W  46|H    |L  31|L  30|"
## [51] "   51 | TEJAS AYYAGARI                  |2.5  |L  27|W  45|L  36|W  57|L  32|D  47|L  33|"
## [52] "   52 | ETHAN GUO                       |2.5  |W  30|D  22|L  19|D  48|L  29|D  35|L  34|"
## [53] "   53 | JOSE C YBARRA                   |2.0  |H    |L  25|H    |L  44|U    |W  57|U    |"
## [54] "   54 | LARRY HODGE                     |2.0  |L  14|L  39|L  61|B    |L  15|L  59|W  64|"
## [55] "   55 | ALEX KONG                       |2.0  |L  62|D  31|L  10|L  30|B    |D  45|L  43|"
## [56] "   56 | MARISA RICCI                    |2.0  |H    |L  11|L  35|W  45|H    |L  40|L  42|"
## [57] "   57 | MICHAEL LU                      |2.0  |L   7|L  36|W  42|L  51|L  35|L  53|B    |"
## [58] "   58 | VIRAJ MOHILE                    |2.0  |W  31|L   2|L  41|L  23|L  49|B    |L  45|"
## [59] "   59 | SEAN M MCCORMICK               |2.0  |L  41|B    |L   9|L  40|L  43|W  54|L  44|" 
## [60] "   60 | JULIA SHEN                      |1.5  |L  33|L  34|D  45|D  42|L  24|H    |U    |"
## [61] "   61 | JEZZEL FARKAS                   |1.5  |L  32|L   3|W  54|L  47|D  42|L  30|L  37|"
## [62] "   62 | ASHWIN BALAJI                   |1.0  |W  55|U    |U    |U    |U    |U    |U    |"
## [63] "   63 | THOMAS JOSEPH HOSMER            |1.0  |L   2|L  48|D  49|L  43|L  45|H    |U    |"
## [64] "   64 | BEN LI                          |1.0  |L  22|D  30|L  31|D  49|L  46|L  42|L  54|"
points = str_extract_all(names_lines, ".\\..")
points = unlist(points)
points
##  [1] "6.0" "6.0" "6.0" "5.5" "5.5" "5.0" "5.0" "5.0" "5.0" "5.0" "4.5" "4.5"
## [13] "4.5" "4.5" "4.5" "4.0" "4.0" "4.0" "4.0" "4.0" "4.0" "4.0" "4.0" "4.0"
## [25] "3.5" "3.5" "3.5" "3.5" "3.5" "3.5" "3.5" "3.5" "3.5" "3.5" "3.5" "3.5"
## [37] "3.5" "3.0" "3.0" "3.0" "3.0" "3.0" "3.0" "3.0" "3.0" "3.0" "2.5" "2.5"
## [49] "2.5" "2.5" "2.5" "2.5" "2.0" "2.0" "2.0" "2.0" "2.0" "2.0" "2.0" "1.5"
## [61] "1.5" "1.0" "1.0" "1.0"
chess$Total_Points = points
pre_rating = str_extract_all(states_lines, "[[:space:]]{1}[0-9]{3,4}[[:space:]]{1}|[[:space:]]{1}[0-9]{3,4}P")
pre_rating = unlist(pre_rating)

pre_rating = trimws(pre_rating)
pre_rating = str_remove_all(pre_rating, "P")

pre_rating
##  [1] "1794" "1553" "1384" "1716" "1655" "1686" "1649" "1641" "1411" "1365"
## [11] "1712" "1663" "1666" "1610" "1220" "1604" "1629" "1600" "1564" "1595"
## [21] "1563" "1555" "1363" "1229" "1745" "1579" "1552" "1507" "1602" "1522"
## [31] "1494" "1441" "1449" "1399" "1438" "1355" "980"  "1423" "1436" "1348"
## [41] "1403" "1332" "1283" "1199" "1242" "377"  "1362" "1382" "1291" "1056"
## [51] "1011" "935"  "1393" "1270" "1186" "1153" "1092" "917"  "853"  "967" 
## [61] "955"  "1530" "1175" "1163"
chess$Pre_Rating = pre_rating
chess$Opponent_Pre_Rating_Avg = 0

head(chess)
pacman::p_load(dplyr, tidyr, magrittr)
chess %<>%
  mutate(State = factor(State)) %>%
  mutate(Total_Points = as.double(Total_Points)) %>%
  mutate(Pre_Rating = as.double(Pre_Rating))

head(chess)
opponents = str_extract_all(names_lines, "W[[:space:]]+[0-9]+|D[[:space:]]+[0-9]+|L[[:space:]]+[0-9]+")
opponents
## [[1]]
## [1] "W  39" "W  21" "W  18" "W  14" "W   7" "D  12" "D   4"
## 
## [[2]]
## [1] "W  63" "W  58" "L   4" "W  17" "W  16" "W  20" "W   7"
## 
## [[3]]
## [1] "L   8" "W  61" "W  25" "W  21" "W  11" "W  13" "W  12"
## 
## [[4]]
## [1] "W  23" "D  28" "W   2" "W  26" "D   5" "W  19" "D   1"
## 
## [[5]]
## [1] "W  45" "W  37" "D  12" "D  13" "D   4" "W  14" "W  17"
## 
## [[6]]
## [1] "W  34" "D  29" "L  11" "W  35" "D  10" "W  27" "W  21"
## 
## [[7]]
## [1] "W  57" "W  46" "W  13" "W  11" "L   1" "W   9" "L   2"
## 
## [[8]]
## [1] "W   3" "W  32" "L  14" "L   9" "W  47" "W  28" "W  19"
## 
## [[9]]
## [1] "W  25" "L  18" "W  59" "W   8" "W  26" "L   7" "W  20"
## 
## [[10]]
## [1] "D  16" "L  19" "W  55" "W  31" "D   6" "W  25" "W  18"
## 
## [[11]]
## [1] "D  38" "W  56" "W   6" "L   7" "L   3" "W  34" "W  26"
## 
## [[12]]
## [1] "W  42" "W  33" "D   5" "W  38" "D   1" "L   3"
## 
## [[13]]
## [1] "W  36" "W  27" "L   7" "D   5" "W  33" "L   3" "W  32"
## 
## [[14]]
## [1] "W  54" "W  44" "W   8" "L   1" "D  27" "L   5" "W  31"
## 
## [[15]]
## [1] "D  19" "L  16" "W  30" "L  22" "W  54" "W  33" "W  38"
## 
## [[16]]
## [1] "D  10" "W  15" "W  39" "L   2" "W  36"
## 
## [[17]]
## [1] "W  48" "W  41" "L  26" "L   2" "W  23" "W  22" "L   5"
## 
## [[18]]
## [1] "W  47" "W   9" "L   1" "W  32" "L  19" "W  38" "L  10"
## 
## [[19]]
## [1] "D  15" "W  10" "W  52" "D  28" "W  18" "L   4" "L   8"
## 
## [[20]]
## [1] "L  40" "W  49" "W  23" "W  41" "W  28" "L   2" "L   9"
## 
## [[21]]
## [1] "W  43" "L   1" "W  47" "L   3" "W  40" "W  39" "L   6"
## 
## [[22]]
## [1] "W  64" "D  52" "L  28" "W  15" "L  17" "W  40"
## 
## [[23]]
## [1] "L   4" "W  43" "L  20" "W  58" "L  17" "W  37" "W  46"
## 
## [[24]]
## [1] "L  28" "L  47" "W  43" "L  25" "W  60" "W  44" "W  39"
## 
## [[25]]
## [1] "L   9" "W  53" "L   3" "W  24" "D  34" "L  10" "W  47"
## 
## [[26]]
## [1] "W  49" "W  40" "W  17" "L   4" "L   9" "D  32" "L  11"
## 
## [[27]]
## [1] "W  51" "L  13" "W  46" "W  37" "D  14" "L   6"
## 
## [[28]]
## [1] "W  24" "D   4" "W  22" "D  19" "L  20" "L   8" "D  36"
## 
## [[29]]
## [1] "W  50" "D   6" "L  38" "L  34" "W  52" "W  48"
## 
## [[30]]
## [1] "L  52" "D  64" "L  15" "W  55" "L  31" "W  61" "W  50"
## 
## [[31]]
## [1] "L  58" "D  55" "W  64" "L  10" "W  30" "W  50" "L  14"
## 
## [[32]]
## [1] "W  61" "L   8" "W  44" "L  18" "W  51" "D  26" "L  13"
## 
## [[33]]
## [1] "W  60" "L  12" "W  50" "D  36" "L  13" "L  15" "W  51"
## 
## [[34]]
## [1] "L   6" "W  60" "L  37" "W  29" "D  25" "L  11" "W  52"
## 
## [[35]]
## [1] "L  46" "L  38" "W  56" "L   6" "W  57" "D  52" "W  48"
## 
## [[36]]
## [1] "L  13" "W  57" "W  51" "D  33" "L  16" "D  28"
## 
## [[37]]
## [1] "L   5" "W  34" "L  27" "L  23" "W  61"
## 
## [[38]]
## [1] "D  11" "W  35" "W  29" "L  12" "L  18" "L  15"
## 
## [[39]]
## [1] "L   1" "W  54" "W  40" "L  16" "W  44" "L  21" "L  24"
## 
## [[40]]
## [1] "W  20" "L  26" "L  39" "W  59" "L  21" "W  56" "L  22"
## 
## [[41]]
## [1] "W  59" "L  17" "W  58" "L  20"
## 
## [[42]]
## [1] "L  12" "L  50" "L  57" "D  60" "D  61" "W  64" "W  56"
## 
## [[43]]
## [1] "L  21" "L  23" "L  24" "W  63" "W  59" "L  46" "W  55"
## 
## [[44]]
## [1] "L  14" "L  32" "W  53" "L  39" "L  24" "W  59"
## 
## [[45]]
## [1] "L   5" "L  51" "D  60" "L  56" "W  63" "D  55" "W  58"
## 
## [[46]]
## [1] "W  35" "L   7" "L  27" "L  50" "W  64" "W  43" "L  23"
## 
## [[47]]
## [1] "L  18" "W  24" "L  21" "W  61" "L   8" "D  51" "L  25"
## 
## [[48]]
## [1] "L  17" "W  63" "D  52" "L  29" "L  35"
## 
## [[49]]
## [1] "L  26" "L  20" "D  63" "D  64" "W  58"
## 
## [[50]]
## [1] "L  29" "W  42" "L  33" "W  46" "L  31" "L  30"
## 
## [[51]]
## [1] "L  27" "W  45" "L  36" "W  57" "L  32" "D  47" "L  33"
## 
## [[52]]
## [1] "W  30" "D  22" "L  19" "D  48" "L  29" "D  35" "L  34"
## 
## [[53]]
## [1] "L  25" "L  44" "W  57"
## 
## [[54]]
## [1] "L  14" "L  39" "L  61" "L  15" "L  59" "W  64"
## 
## [[55]]
## [1] "L  62" "D  31" "L  10" "L  30" "D  45" "L  43"
## 
## [[56]]
## [1] "L  11" "L  35" "W  45" "L  40" "L  42"
## 
## [[57]]
## [1] "L   7" "L  36" "W  42" "L  51" "L  35" "L  53"
## 
## [[58]]
## [1] "W  31" "L   2" "L  41" "L  23" "L  49" "L  45"
## 
## [[59]]
## [1] "L  41" "L   9" "L  40" "L  43" "W  54" "L  44"
## 
## [[60]]
## [1] "L  33" "L  34" "D  45" "D  42" "L  24"
## 
## [[61]]
## [1] "L  32" "L   3" "W  54" "L  47" "D  42" "L  30" "L  37"
## 
## [[62]]
## [1] "W  55"
## 
## [[63]]
## [1] "L   2" "L  48" "D  49" "L  43" "L  45"
## 
## [[64]]
## [1] "L  22" "D  30" "L  31" "D  49" "L  46" "L  42" "L  54"
opponents = str_extract_all(opponents, "[[:space:]]{1}[0-9]+")
## Warning in stri_extract_all_regex(string, pattern, simplify = simplify, :
## argument is not an atomic vector; coercing
opponents = lapply(opponents, trimws)
opponents = lapply(opponents, as.numeric)
opponents
## [[1]]
## [1] 39 21 18 14  7 12  4
## 
## [[2]]
## [1] 63 58  4 17 16 20  7
## 
## [[3]]
## [1]  8 61 25 21 11 13 12
## 
## [[4]]
## [1] 23 28  2 26  5 19  1
## 
## [[5]]
## [1] 45 37 12 13  4 14 17
## 
## [[6]]
## [1] 34 29 11 35 10 27 21
## 
## [[7]]
## [1] 57 46 13 11  1  9  2
## 
## [[8]]
## [1]  3 32 14  9 47 28 19
## 
## [[9]]
## [1] 25 18 59  8 26  7 20
## 
## [[10]]
## [1] 16 19 55 31  6 25 18
## 
## [[11]]
## [1] 38 56  6  7  3 34 26
## 
## [[12]]
## [1] 42 33  5 38  1  3
## 
## [[13]]
## [1] 36 27  7  5 33  3 32
## 
## [[14]]
## [1] 54 44  8  1 27  5 31
## 
## [[15]]
## [1] 19 16 30 22 54 33 38
## 
## [[16]]
## [1] 10 15 39  2 36
## 
## [[17]]
## [1] 48 41 26  2 23 22  5
## 
## [[18]]
## [1] 47  9  1 32 19 38 10
## 
## [[19]]
## [1] 15 10 52 28 18  4  8
## 
## [[20]]
## [1] 40 49 23 41 28  2  9
## 
## [[21]]
## [1] 43  1 47  3 40 39  6
## 
## [[22]]
## [1] 64 52 28 15 17 40
## 
## [[23]]
## [1]  4 43 20 58 17 37 46
## 
## [[24]]
## [1] 28 47 43 25 60 44 39
## 
## [[25]]
## [1]  9 53  3 24 34 10 47
## 
## [[26]]
## [1] 49 40 17  4  9 32 11
## 
## [[27]]
## [1] 51 13 46 37 14  6
## 
## [[28]]
## [1] 24  4 22 19 20  8 36
## 
## [[29]]
## [1] 50  6 38 34 52 48
## 
## [[30]]
## [1] 52 64 15 55 31 61 50
## 
## [[31]]
## [1] 58 55 64 10 30 50 14
## 
## [[32]]
## [1] 61  8 44 18 51 26 13
## 
## [[33]]
## [1] 60 12 50 36 13 15 51
## 
## [[34]]
## [1]  6 60 37 29 25 11 52
## 
## [[35]]
## [1] 46 38 56  6 57 52 48
## 
## [[36]]
## [1] 13 57 51 33 16 28
## 
## [[37]]
## [1]  5 34 27 23 61
## 
## [[38]]
## [1] 11 35 29 12 18 15
## 
## [[39]]
## [1]  1 54 40 16 44 21 24
## 
## [[40]]
## [1] 20 26 39 59 21 56 22
## 
## [[41]]
## [1] 59 17 58 20
## 
## [[42]]
## [1] 12 50 57 60 61 64 56
## 
## [[43]]
## [1] 21 23 24 63 59 46 55
## 
## [[44]]
## [1] 14 32 53 39 24 59
## 
## [[45]]
## [1]  5 51 60 56 63 55 58
## 
## [[46]]
## [1] 35  7 27 50 64 43 23
## 
## [[47]]
## [1] 18 24 21 61  8 51 25
## 
## [[48]]
## [1] 17 63 52 29 35
## 
## [[49]]
## [1] 26 20 63 64 58
## 
## [[50]]
## [1] 29 42 33 46 31 30
## 
## [[51]]
## [1] 27 45 36 57 32 47 33
## 
## [[52]]
## [1] 30 22 19 48 29 35 34
## 
## [[53]]
## [1] 25 44 57
## 
## [[54]]
## [1] 14 39 61 15 59 64
## 
## [[55]]
## [1] 62 31 10 30 45 43
## 
## [[56]]
## [1] 11 35 45 40 42
## 
## [[57]]
## [1]  7 36 42 51 35 53
## 
## [[58]]
## [1] 31  2 41 23 49 45
## 
## [[59]]
## [1] 41  9 40 43 54 44
## 
## [[60]]
## [1] 33 34 45 42 24
## 
## [[61]]
## [1] 32  3 54 47 42 30 37
## 
## [[62]]
## [1] 55
## 
## [[63]]
## [1]  2 48 49 43 45
## 
## [[64]]
## [1] 22 30 31 49 46 42 54
for (i in 1:length(opponents)){
  x = 0
  for (c in opponents[i][1]){
    x = x + chess$Pre_Rating[c]
  }
  chess$Opponent_Pre_Rating_Avg[i] = mean(x)
}

chess$Opponent_Pre_Rating_Avg = round(chess$Opponent_Pre_Rating_Avg)
head(chess)
write.csv(chess, 'tournamentinfo.csv', row.names = FALSE)