options(warn=-1)
library(XML)
library(httr)
library(curl)
## 
## Attaching package: 'curl'
## The following object is masked from 'package:httr':
## 
##     handle_reset
library(RCurl)
## Loading required package: bitops
library(stringr)
library(tm)
## Loading required package: NLP
## 
## Attaching package: 'NLP'
## The following object is masked from 'package:httr':
## 
##     content
library(sm)
## Package 'sm', version 2.2-5.5: type help(sm) for summary information

DATA607 Fall 2018 - PROJECT ONE

John K. Hancock

  1. Read in the text file, collapse it as one large block of text, unlist and parse it into a vector using str_split, and go through a series of replace statements to search for strings and replace them.
txt<- character()
txt <- c(txt, readLines('tournamentinfo.txt'))
txt <- str_c(txt, collapse = "\n")
txt_parsed <-unlist(str_split(txt, "-----------------------------------------------------------------------------------------"))
txt_parsed<-str_replace(txt_parsed,pattern="^\n","")
txt_parsed<-str_replace(txt_parsed,pattern="\n$","")
txt_parsed<-str_replace(txt_parsed," \n Num  ","Num")
txt_parsed<-str_replace(txt_parsed," / R:","|")
txt_parsed<-str_replace(txt_parsed,"USCF ID / Rtg ", "USCF ID|Rtg")
txt_parsed<-str_replace(txt_parsed,"->","|")
txt_parsed<-str_replace(txt_parsed,"Rtg\\(Pre|Post\\)", "Rating Prior|Rating Post")
txt_parsed<-str_replace(txt_parsed,"Post\\)", "")
txt_parsed<-str_replace(txt_parsed,"\n","")
txt_parsed<-txt_parsed[txt_parsed != ""]
  1. The first line below shows the second element in the txt_parsed vector. The next statement locates the coordinates for where all of the “|” delimiters are located.
txt_parsed[2]
## [1] "    1 | GARY HUA                        |6.0  |W  39|W  21|W  18|W  14|W   7|D  12|D   4|   ON | 15445895| 1794   |1817     |N:2  |W    |B    |W    |B    |W    |B    |W    |"
str_locate_all(txt_parsed[2], "\\|")
## [[1]]
##       start end
##  [1,]     7   7
##  [2,]    41  41
##  [3,]    47  47
##  [4,]    53  53
##  [5,]    59  59
##  [6,]    65  65
##  [7,]    71  71
##  [8,]    77  77
##  [9,]    83  83
## [10,]    89  89
## [11,]    96  96
## [12,]   106 106
## [13,]   115 115
## [14,]   125 125
## [15,]   131 131
## [16,]   137 137
## [17,]   143 143
## [18,]   149 149
## [19,]   155 155
## [20,]   161 161
## [21,]   167 167
## [22,]   173 173
  1. With the coordinates of the “|”, the next step is to extract the data into individual vectors, player_id, player_name, player_state, total_no_of_points, and player_pre_rating. The vector, player_opp, contains the player_ids for a player’s opponent. The vector black_white contains each instance of whether the player’s chess pieces were Black or White.
player_id <- trimws(str_sub(txt_parsed[2:65],0,6))
player_name<- trimws(str_sub(txt_parsed[2:65],8,40))
player_state<- trimws(str_sub(txt_parsed[2:65],90,95))
total_no_of_points<-trimws(str_sub(txt_parsed[2:65],42,46))
player_pre_rating<-str_replace(trimws(str_sub(txt_parsed[2:65],107,114)),"P.*$","") 
player_opp<-trimws(str_sub(txt_parsed[2:65],48,88))
black_white <- trimws(str_sub(txt_parsed[2:65],132,168))
player_id<-as.numeric(player_id)
player_id
##  [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
## [24] 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46
## [47] 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
player_name
##  [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 MC LEMAN"   "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-BELLU"
## [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 MC CORMICK"          "JULIA SHEN"                
## [61] "JEZZEL FARKAS"              "ASHWIN BALAJI"             
## [63] "THOMAS JOSEPH HOSMER"       "BEN LI"
player_state
##  [1] "ON" "MI" "MI" "MI" "MI" "OH" "MI" "MI" "ON" "MI" "MI" "MI" "MI" "MI"
## [15] "MI" "MI" "MI" "MI" "MI" "MI" "ON" "MI" "ON" "MI" "MI" "ON" "MI" "MI"
## [29] "MI" "ON" "MI" "ON" "MI" "MI" "MI" "MI" "MI" "MI" "MI" "MI" "MI" "MI"
## [43] "MI" "MI" "MI" "MI" "MI" "MI" "MI" "MI" "MI" "MI" "MI" "MI" "MI" "MI"
## [57] "MI" "MI" "MI" "MI" "ON" "MI" "MI" "MI"
total_no_of_points<-as.numeric(total_no_of_points)
total_no_of_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 4.5 4.5 4.5 4.0 4.0
## [18] 4.0 4.0 4.0 4.0 4.0 4.0 4.0 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5 3.5
## [35] 3.5 3.5 3.5 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 3.0 2.5 2.5 2.5 2.5 2.5
## [52] 2.5 2.0 2.0 2.0 2.0 2.0 2.0 2.0 1.5 1.5 1.0 1.0 1.0
player_pre_rating<-as.numeric(player_pre_rating)
player_pre_rating
##  [1] 1794 1553 1384 1716 1655 1686 1649 1641 1411 1365 1712 1663 1666 1610
## [15] 1220 1604 1629 1600 1564 1595 1563 1555 1363 1229 1745 1579 1552 1507
## [29] 1602 1522 1494 1441 1449 1399 1438 1355  980 1423 1436 1348 1403 1332
## [43] 1283 1199 1242  377 1362 1382 1291 1056 1011  935 1393 1270 1186 1153
## [57] 1092  917  853  967  955 1530 1175 1163
  1. The vectors player_id, player_name, player_state, total_no_of_points, and player_pre_rating were combined into a data frame.
df = data.frame(player_id,player_name,player_state,total_no_of_points,player_pre_rating)
df
##    player_id                player_name player_state total_no_of_points
## 1          1                   GARY HUA           ON                6.0
## 2          2            DAKSHESH DARURI           MI                6.0
## 3          3               ADITYA BAJAJ           MI                6.0
## 4          4        PATRICK H SCHILLING           MI                5.5
## 5          5                 HANSHI ZUO           MI                5.5
## 6          6                HANSEN SONG           OH                5.0
## 7          7          GARY DEE SWATHELL           MI                5.0
## 8          8           EZEKIEL HOUGHTON           MI                5.0
## 9          9                STEFANO LEE           ON                5.0
## 10        10                  ANVIT RAO           MI                5.0
## 11        11   CAMERON WILLIAM MC LEMAN           MI                4.5
## 12        12             KENNETH J TACK           MI                4.5
## 13        13          TORRANCE HENRY JR           MI                4.5
## 14        14               BRADLEY SHAW           MI                4.5
## 15        15     ZACHARY JAMES HOUGHTON           MI                4.5
## 16        16               MIKE NIKITIN           MI                4.0
## 17        17         RONALD GRZEGORCZYK           MI                4.0
## 18        18              DAVID SUNDEEN           MI                4.0
## 19        19               DIPANKAR ROY           MI                4.0
## 20        20                JASON ZHENG           MI                4.0
## 21        21              DINH DANG BUI           ON                4.0
## 22        22           EUGENE L MCCLURE           MI                4.0
## 23        23                   ALAN BUI           ON                4.0
## 24        24          MICHAEL R ALDRICH           MI                4.0
## 25        25           LOREN SCHWIEBERT           MI                3.5
## 26        26                    MAX ZHU           ON                3.5
## 27        27             GAURAV GIDWANI           MI                3.5
## 28        28 SOFIA ADINA STANESCU-BELLU           MI                3.5
## 29        29           CHIEDOZIE OKORIE           MI                3.5
## 30        30         GEORGE AVERY JONES           ON                3.5
## 31        31               RISHI SHETTY           MI                3.5
## 32        32      JOSHUA PHILIP MATHEWS           ON                3.5
## 33        33                    JADE GE           MI                3.5
## 34        34     MICHAEL JEFFERY THOMAS           MI                3.5
## 35        35           JOSHUA DAVID LEE           MI                3.5
## 36        36              SIDDHARTH JHA           MI                3.5
## 37        37       AMIYATOSH PWNANANDAM           MI                3.5
## 38        38                  BRIAN LIU           MI                3.0
## 39        39              JOEL R HENDON           MI                3.0
## 40        40               FOREST ZHANG           MI                3.0
## 41        41        KYLE WILLIAM MURPHY           MI                3.0
## 42        42                   JARED GE           MI                3.0
## 43        43          ROBERT GLEN VASEY           MI                3.0
## 44        44         JUSTIN D SCHILLING           MI                3.0
## 45        45                  DEREK YAN           MI                3.0
## 46        46   JACOB ALEXANDER LAVALLEY           MI                3.0
## 47        47                ERIC WRIGHT           MI                2.5
## 48        48               DANIEL KHAIN           MI                2.5
## 49        49           MICHAEL J MARTIN           MI                2.5
## 50        50                 SHIVAM JHA           MI                2.5
## 51        51             TEJAS AYYAGARI           MI                2.5
## 52        52                  ETHAN GUO           MI                2.5
## 53        53              JOSE C YBARRA           MI                2.0
## 54        54                LARRY HODGE           MI                2.0
## 55        55                  ALEX KONG           MI                2.0
## 56        56               MARISA RICCI           MI                2.0
## 57        57                 MICHAEL LU           MI                2.0
## 58        58               VIRAJ MOHILE           MI                2.0
## 59        59          SEAN M MC CORMICK           MI                2.0
## 60        60                 JULIA SHEN           MI                1.5
## 61        61              JEZZEL FARKAS           ON                1.5
## 62        62              ASHWIN BALAJI           MI                1.0
## 63        63       THOMAS JOSEPH HOSMER           MI                1.0
## 64        64                     BEN LI           MI                1.0
##    player_pre_rating
## 1               1794
## 2               1553
## 3               1384
## 4               1716
## 5               1655
## 6               1686
## 7               1649
## 8               1641
## 9               1411
## 10              1365
## 11              1712
## 12              1663
## 13              1666
## 14              1610
## 15              1220
## 16              1604
## 17              1629
## 18              1600
## 19              1564
## 20              1595
## 21              1563
## 22              1555
## 23              1363
## 24              1229
## 25              1745
## 26              1579
## 27              1552
## 28              1507
## 29              1602
## 30              1522
## 31              1494
## 32              1441
## 33              1449
## 34              1399
## 35              1438
## 36              1355
## 37               980
## 38              1423
## 39              1436
## 40              1348
## 41              1403
## 42              1332
## 43              1283
## 44              1199
## 45              1242
## 46               377
## 47              1362
## 48              1382
## 49              1291
## 50              1056
## 51              1011
## 52               935
## 53              1393
## 54              1270
## 55              1186
## 56              1153
## 57              1092
## 58               917
## 59               853
## 60               967
## 61               955
## 62              1530
## 63              1175
## 64              1163
  1. In the next block, I created a test to calculate the Average Pre Chess Rating of Opponents. This is done by extracting the player_ids of opponents by searching for only 1 to 2 digits in the string. Next these were added to a numeric vector. With the player_ids, I created a temporary data frame for a player’s opponent by subsetting records for only the opponents. Finally, by taking the mean of these players, I have each the Average Pre Chess Rating of Opponents.
test<- unlist(str_extract_all(player_opp[1],"[:digit:]{1,2}"))
test <- as.numeric(test)
temp<- df[df$player_id %in% test,]
mean(temp$player_pre_rating)
## [1] 1605.286

5a. With a successful test, I created a for loop which calculates the Average Pre Chess Rating of Opponents for all of the playerrs, and then adding that vector to the data frame.

opponent_avg <- vector(mode="numeric")

for (i in seq(1,length(player_opp)))
{
    
    test<- unlist(str_extract_all(player_opp[i],"[:digit:]{1,2}"))
    test <- as.numeric(test)
    temp<- df[df$player_id %in% test,]
    opponent_avg<-append(opponent_avg, mean(temp$player_pre_rating))
}

opponent_avg
##  [1] 1605.286 1469.286 1563.571 1573.571 1500.857 1518.714 1372.143
##  [8] 1468.429 1523.143 1554.143 1467.571 1506.167 1497.857 1515.000
## [15] 1483.857 1385.800 1498.571 1480.000 1426.286 1410.857 1470.429
## [22] 1300.333 1213.857 1357.000 1363.286 1506.857 1221.667 1522.143
## [29] 1313.500 1144.143 1259.857 1378.714 1276.857 1375.286 1149.714
## [36] 1388.167 1384.800 1539.167 1429.571 1390.571 1248.500 1149.857
## [43] 1106.571 1327.000 1152.000 1357.714 1392.000 1355.800 1285.800
## [50] 1296.000 1356.143 1494.571 1345.333 1206.167 1406.000 1414.400
## [57] 1363.000 1391.000 1319.000 1330.200 1327.286 1186.000 1350.200
## [64] 1263.000
df$avg_pre_chess_rating_of_opponents<-c(opponent_avg)
df
##    player_id                player_name player_state total_no_of_points
## 1          1                   GARY HUA           ON                6.0
## 2          2            DAKSHESH DARURI           MI                6.0
## 3          3               ADITYA BAJAJ           MI                6.0
## 4          4        PATRICK H SCHILLING           MI                5.5
## 5          5                 HANSHI ZUO           MI                5.5
## 6          6                HANSEN SONG           OH                5.0
## 7          7          GARY DEE SWATHELL           MI                5.0
## 8          8           EZEKIEL HOUGHTON           MI                5.0
## 9          9                STEFANO LEE           ON                5.0
## 10        10                  ANVIT RAO           MI                5.0
## 11        11   CAMERON WILLIAM MC LEMAN           MI                4.5
## 12        12             KENNETH J TACK           MI                4.5
## 13        13          TORRANCE HENRY JR           MI                4.5
## 14        14               BRADLEY SHAW           MI                4.5
## 15        15     ZACHARY JAMES HOUGHTON           MI                4.5
## 16        16               MIKE NIKITIN           MI                4.0
## 17        17         RONALD GRZEGORCZYK           MI                4.0
## 18        18              DAVID SUNDEEN           MI                4.0
## 19        19               DIPANKAR ROY           MI                4.0
## 20        20                JASON ZHENG           MI                4.0
## 21        21              DINH DANG BUI           ON                4.0
## 22        22           EUGENE L MCCLURE           MI                4.0
## 23        23                   ALAN BUI           ON                4.0
## 24        24          MICHAEL R ALDRICH           MI                4.0
## 25        25           LOREN SCHWIEBERT           MI                3.5
## 26        26                    MAX ZHU           ON                3.5
## 27        27             GAURAV GIDWANI           MI                3.5
## 28        28 SOFIA ADINA STANESCU-BELLU           MI                3.5
## 29        29           CHIEDOZIE OKORIE           MI                3.5
## 30        30         GEORGE AVERY JONES           ON                3.5
## 31        31               RISHI SHETTY           MI                3.5
## 32        32      JOSHUA PHILIP MATHEWS           ON                3.5
## 33        33                    JADE GE           MI                3.5
## 34        34     MICHAEL JEFFERY THOMAS           MI                3.5
## 35        35           JOSHUA DAVID LEE           MI                3.5
## 36        36              SIDDHARTH JHA           MI                3.5
## 37        37       AMIYATOSH PWNANANDAM           MI                3.5
## 38        38                  BRIAN LIU           MI                3.0
## 39        39              JOEL R HENDON           MI                3.0
## 40        40               FOREST ZHANG           MI                3.0
## 41        41        KYLE WILLIAM MURPHY           MI                3.0
## 42        42                   JARED GE           MI                3.0
## 43        43          ROBERT GLEN VASEY           MI                3.0
## 44        44         JUSTIN D SCHILLING           MI                3.0
## 45        45                  DEREK YAN           MI                3.0
## 46        46   JACOB ALEXANDER LAVALLEY           MI                3.0
## 47        47                ERIC WRIGHT           MI                2.5
## 48        48               DANIEL KHAIN           MI                2.5
## 49        49           MICHAEL J MARTIN           MI                2.5
## 50        50                 SHIVAM JHA           MI                2.5
## 51        51             TEJAS AYYAGARI           MI                2.5
## 52        52                  ETHAN GUO           MI                2.5
## 53        53              JOSE C YBARRA           MI                2.0
## 54        54                LARRY HODGE           MI                2.0
## 55        55                  ALEX KONG           MI                2.0
## 56        56               MARISA RICCI           MI                2.0
## 57        57                 MICHAEL LU           MI                2.0
## 58        58               VIRAJ MOHILE           MI                2.0
## 59        59          SEAN M MC CORMICK           MI                2.0
## 60        60                 JULIA SHEN           MI                1.5
## 61        61              JEZZEL FARKAS           ON                1.5
## 62        62              ASHWIN BALAJI           MI                1.0
## 63        63       THOMAS JOSEPH HOSMER           MI                1.0
## 64        64                     BEN LI           MI                1.0
##    player_pre_rating avg_pre_chess_rating_of_opponents
## 1               1794                          1605.286
## 2               1553                          1469.286
## 3               1384                          1563.571
## 4               1716                          1573.571
## 5               1655                          1500.857
## 6               1686                          1518.714
## 7               1649                          1372.143
## 8               1641                          1468.429
## 9               1411                          1523.143
## 10              1365                          1554.143
## 11              1712                          1467.571
## 12              1663                          1506.167
## 13              1666                          1497.857
## 14              1610                          1515.000
## 15              1220                          1483.857
## 16              1604                          1385.800
## 17              1629                          1498.571
## 18              1600                          1480.000
## 19              1564                          1426.286
## 20              1595                          1410.857
## 21              1563                          1470.429
## 22              1555                          1300.333
## 23              1363                          1213.857
## 24              1229                          1357.000
## 25              1745                          1363.286
## 26              1579                          1506.857
## 27              1552                          1221.667
## 28              1507                          1522.143
## 29              1602                          1313.500
## 30              1522                          1144.143
## 31              1494                          1259.857
## 32              1441                          1378.714
## 33              1449                          1276.857
## 34              1399                          1375.286
## 35              1438                          1149.714
## 36              1355                          1388.167
## 37               980                          1384.800
## 38              1423                          1539.167
## 39              1436                          1429.571
## 40              1348                          1390.571
## 41              1403                          1248.500
## 42              1332                          1149.857
## 43              1283                          1106.571
## 44              1199                          1327.000
## 45              1242                          1152.000
## 46               377                          1357.714
## 47              1362                          1392.000
## 48              1382                          1355.800
## 49              1291                          1285.800
## 50              1056                          1296.000
## 51              1011                          1356.143
## 52               935                          1494.571
## 53              1393                          1345.333
## 54              1270                          1206.167
## 55              1186                          1406.000
## 56              1153                          1414.400
## 57              1092                          1363.000
## 58               917                          1391.000
## 59               853                          1319.000
## 60               967                          1330.200
## 61               955                          1327.286
## 62              1530                          1186.000
## 63              1175                          1350.200
## 64              1163                          1263.000
  1. I went a step further. I wanted to know how many Wins, Losses, Draws, U’s, and H’s that a player has. Additionally, I wanted to count the number of times a player has played with Black or White chess pieces. Using extract all on player_opp and black_white to search for “W”,“L”,“D”,“U”, and “H” and putting these values are put into vectors, I was able to count the length of each vector to calculate the number of Wins, Losses, Draws, Us, and Hs. I took the same approach to count the number of times a player played with either Black or White pieces.
countofWins<- vector(mode="numeric")
countofLosses<-vector(mode="numeric")
countofDraws <-vector(mode="numeric")
countofU <-vector(mode="numeric")
countofH <-vector(mode="numeric")
countofWhite <-vector(mode="numeric")
countofBlack <- vector(mode="numeric")

for (i in seq(1,length(player_opp)))
{
        
    wins<- unlist(str_extract_all(player_opp[i],"[W]"))
    countofWins<-append(countofWins,length(wins))
    
    losses <- unlist(str_extract_all(player_opp[i],"[L]"))
    countofLosses<-append(countofLosses,length(losses))
    
    draws <- unlist(str_extract_all(player_opp[i],"[D]"))
    countofDraws<-append(countofDraws,length(draws))
    
    U <- unlist(str_extract_all(player_opp[i],"[U]"))
    countofU<-append(countofU,length(U))
    
    H<-unlist(str_extract_all(player_opp[i],"[H]"))
    countofH<-append(countofH,length(H))
    
    WHite<-unlist(str_extract_all(black_white[i],"[W]"))
    countofWhite<-append(countofWhite,length(WHite))
    
    Black<-unlist(str_extract_all(black_white[i],"[B]"))
    countofBlack<-append(countofBlack,length(Black))
}
  1. These values were added to the data frame.
df$Wins <- countofWins
df$Losses <- countofLosses
df$Draws <- countofDraws 
df$U <- countofU 
df$H <- countofH
df$White<- countofWhite
df$Black<-countofBlack
df
##    player_id                player_name player_state total_no_of_points
## 1          1                   GARY HUA           ON                6.0
## 2          2            DAKSHESH DARURI           MI                6.0
## 3          3               ADITYA BAJAJ           MI                6.0
## 4          4        PATRICK H SCHILLING           MI                5.5
## 5          5                 HANSHI ZUO           MI                5.5
## 6          6                HANSEN SONG           OH                5.0
## 7          7          GARY DEE SWATHELL           MI                5.0
## 8          8           EZEKIEL HOUGHTON           MI                5.0
## 9          9                STEFANO LEE           ON                5.0
## 10        10                  ANVIT RAO           MI                5.0
## 11        11   CAMERON WILLIAM MC LEMAN           MI                4.5
## 12        12             KENNETH J TACK           MI                4.5
## 13        13          TORRANCE HENRY JR           MI                4.5
## 14        14               BRADLEY SHAW           MI                4.5
## 15        15     ZACHARY JAMES HOUGHTON           MI                4.5
## 16        16               MIKE NIKITIN           MI                4.0
## 17        17         RONALD GRZEGORCZYK           MI                4.0
## 18        18              DAVID SUNDEEN           MI                4.0
## 19        19               DIPANKAR ROY           MI                4.0
## 20        20                JASON ZHENG           MI                4.0
## 21        21              DINH DANG BUI           ON                4.0
## 22        22           EUGENE L MCCLURE           MI                4.0
## 23        23                   ALAN BUI           ON                4.0
## 24        24          MICHAEL R ALDRICH           MI                4.0
## 25        25           LOREN SCHWIEBERT           MI                3.5
## 26        26                    MAX ZHU           ON                3.5
## 27        27             GAURAV GIDWANI           MI                3.5
## 28        28 SOFIA ADINA STANESCU-BELLU           MI                3.5
## 29        29           CHIEDOZIE OKORIE           MI                3.5
## 30        30         GEORGE AVERY JONES           ON                3.5
## 31        31               RISHI SHETTY           MI                3.5
## 32        32      JOSHUA PHILIP MATHEWS           ON                3.5
## 33        33                    JADE GE           MI                3.5
## 34        34     MICHAEL JEFFERY THOMAS           MI                3.5
## 35        35           JOSHUA DAVID LEE           MI                3.5
## 36        36              SIDDHARTH JHA           MI                3.5
## 37        37       AMIYATOSH PWNANANDAM           MI                3.5
## 38        38                  BRIAN LIU           MI                3.0
## 39        39              JOEL R HENDON           MI                3.0
## 40        40               FOREST ZHANG           MI                3.0
## 41        41        KYLE WILLIAM MURPHY           MI                3.0
## 42        42                   JARED GE           MI                3.0
## 43        43          ROBERT GLEN VASEY           MI                3.0
## 44        44         JUSTIN D SCHILLING           MI                3.0
## 45        45                  DEREK YAN           MI                3.0
## 46        46   JACOB ALEXANDER LAVALLEY           MI                3.0
## 47        47                ERIC WRIGHT           MI                2.5
## 48        48               DANIEL KHAIN           MI                2.5
## 49        49           MICHAEL J MARTIN           MI                2.5
## 50        50                 SHIVAM JHA           MI                2.5
## 51        51             TEJAS AYYAGARI           MI                2.5
## 52        52                  ETHAN GUO           MI                2.5
## 53        53              JOSE C YBARRA           MI                2.0
## 54        54                LARRY HODGE           MI                2.0
## 55        55                  ALEX KONG           MI                2.0
## 56        56               MARISA RICCI           MI                2.0
## 57        57                 MICHAEL LU           MI                2.0
## 58        58               VIRAJ MOHILE           MI                2.0
## 59        59          SEAN M MC CORMICK           MI                2.0
## 60        60                 JULIA SHEN           MI                1.5
## 61        61              JEZZEL FARKAS           ON                1.5
## 62        62              ASHWIN BALAJI           MI                1.0
## 63        63       THOMAS JOSEPH HOSMER           MI                1.0
## 64        64                     BEN LI           MI                1.0
##    player_pre_rating avg_pre_chess_rating_of_opponents Wins Losses Draws U
## 1               1794                          1605.286    5      0     2 0
## 2               1553                          1469.286    6      1     0 0
## 3               1384                          1563.571    6      1     0 0
## 4               1716                          1573.571    4      0     3 0
## 5               1655                          1500.857    4      0     3 0
## 6               1686                          1518.714    4      1     2 0
## 7               1649                          1372.143    5      2     0 0
## 8               1641                          1468.429    5      2     0 0
## 9               1411                          1523.143    5      2     0 0
## 10              1365                          1554.143    4      1     2 0
## 11              1712                          1467.571    4      2     1 0
## 12              1663                          1506.167    3      1     2 0
## 13              1666                          1497.857    4      2     1 0
## 14              1610                          1515.000    4      2     1 0
## 15              1220                          1483.857    4      2     1 0
## 16              1604                          1385.800    3      1     1 1
## 17              1629                          1498.571    4      3     0 0
## 18              1600                          1480.000    4      3     0 0
## 19              1564                          1426.286    3      2     2 0
## 20              1595                          1410.857    4      3     0 0
## 21              1563                          1470.429    4      3     0 0
## 22              1555                          1300.333    3      2     1 0
## 23              1363                          1213.857    4      3     0 0
## 24              1229                          1357.000    4      3     0 0
## 25              1745                          1363.286    3      3     1 0
## 26              1579                          1506.857    3      3     1 0
## 27              1552                          1221.667    3      2     1 1
## 28              1507                          1522.143    2      2     3 0
## 29              1602                          1313.500    3      2     1 1
## 30              1522                          1144.143    3      3     1 0
## 31              1494                          1259.857    3      3     1 0
## 32              1441                          1378.714    3      3     1 0
## 33              1449                          1276.857    3      3     1 0
## 34              1399                          1375.286    3      3     1 0
## 35              1438                          1149.714    3      3     1 0
## 36              1355                          1388.167    2      2     2 0
## 37               980                          1384.800    2      3     0 0
## 38              1423                          1539.167    2      3     1 0
## 39              1436                          1429.571    3      4     0 0
## 40              1348                          1390.571    3      4     0 0
## 41              1403                          1248.500    2      2     0 2
## 42              1332                          1149.857    2      3     2 0
## 43              1283                          1106.571    3      4     0 0
## 44              1199                          1327.000    2      4     0 0
## 45              1242                          1152.000    2      3     2 0
## 46               377                          1357.714    3      4     0 0
## 47              1362                          1392.000    2      4     1 0
## 48              1382                          1355.800    1      3     1 0
## 49              1291                          1285.800    1      2     2 1
## 50              1056                          1296.000    2      4     0 0
## 51              1011                          1356.143    2      4     1 0
## 52               935                          1494.571    1      3     3 0
## 53              1393                          1345.333    1      2     0 2
## 54              1270                          1206.167    1      5     0 0
## 55              1186                          1406.000    0      4     2 0
## 56              1153                          1414.400    1      4     0 0
## 57              1092                          1363.000    1      5     0 0
## 58               917                          1391.000    1      5     0 0
## 59               853                          1319.000    1      5     0 0
## 60               967                          1330.200    0      3     2 1
## 61               955                          1327.286    1      5     1 0
## 62              1530                          1186.000    1      0     0 6
## 63              1175                          1350.200    0      4     1 1
## 64              1163                          1263.000    0      5     2 0
##    H White Black
## 1  0     4     3
## 2  0     3     4
## 3  0     4     3
## 4  0     3     4
## 5  0     3     4
## 6  0     3     4
## 7  0     4     3
## 8  0     4     3
## 9  0     3     4
## 10 0     4     3
## 11 0     3     4
## 12 1     3     3
## 13 0     3     4
## 14 0     4     3
## 15 0     3     4
## 16 1     2     3
## 17 0     4     3
## 18 0     3     4
## 19 0     4     3
## 20 0     4     3
## 21 0     4     3
## 22 1     3     3
## 23 0     3     4
## 24 0     3     4
## 25 0     3     4
## 26 0     4     3
## 27 0     3     3
## 28 0     4     3
## 29 0     3     3
## 30 0     3     4
## 31 0     3     4
## 32 0     4     3
## 33 0     3     4
## 34 0     3     4
## 35 0     4     3
## 36 1     3     3
## 37 1     3     2
## 38 1     3     3
## 39 0     4     3
## 40 0     4     3
## 41 0     2     2
## 42 0     3     4
## 43 0     4     3
## 44 0     3     3
## 45 0     4     3
## 46 0     4     3
## 47 0     4     3
## 48 2     2     3
## 49 1     3     2
## 50 1     3     3
## 51 0     4     3
## 52 0     3     4
## 53 2     2     1
## 54 0     3     3
## 55 0     3     3
## 56 2     3     2
## 57 0     3     3
## 58 0     3     3
## 59 0     3     3
## 60 1     2     3
## 61 0     3     4
## 62 0     0     1
## 63 1     2     3
## 64 0     3     4
summary(df)
##    player_id                   player_name player_state total_no_of_points
##  Min.   : 1.00   ADITYA BAJAJ        : 1   MI:55        Min.   :1.000     
##  1st Qu.:16.75   ALAN BUI            : 1   OH: 1        1st Qu.:2.500     
##  Median :32.50   ALEX KONG           : 1   ON: 8        Median :3.500     
##  Mean   :32.50   AMIYATOSH PWNANANDAM: 1                Mean   :3.438     
##  3rd Qu.:48.25   ANVIT RAO           : 1                3rd Qu.:4.000     
##  Max.   :64.00   ASHWIN BALAJI       : 1                Max.   :6.000     
##                  (Other)             :58                                  
##  player_pre_rating avg_pre_chess_rating_of_opponents      Wins      
##  Min.   : 377      Min.   :1107                      Min.   :0.000  
##  1st Qu.:1227      1st Qu.:1310                      1st Qu.:2.000  
##  Median :1407      Median :1382                      Median :3.000  
##  Mean   :1378      Mean   :1379                      Mean   :2.734  
##  3rd Qu.:1583      3rd Qu.:1481                      3rd Qu.:4.000  
##  Max.   :1794      Max.   :1605                      Max.   :6.000  
##                                                                     
##      Losses          Draws              U              H       
##  Min.   :0.000   Min.   :0.0000   Min.   :0.00   Min.   :0.00  
##  1st Qu.:2.000   1st Qu.:0.0000   1st Qu.:0.00   1st Qu.:0.00  
##  Median :3.000   Median :1.0000   Median :0.00   Median :0.00  
##  Mean   :2.734   Mean   :0.9062   Mean   :0.25   Mean   :0.25  
##  3rd Qu.:4.000   3rd Qu.:1.2500   3rd Qu.:0.00   3rd Qu.:0.00  
##  Max.   :5.000   Max.   :3.0000   Max.   :6.00   Max.   :2.00  
##                                                                
##      White           Black      
##  Min.   :0.000   Min.   :1.000  
##  1st Qu.:3.000   1st Qu.:3.000  
##  Median :3.000   Median :3.000  
##  Mean   :3.188   Mean   :3.188  
##  3rd Qu.:4.000   3rd Qu.:4.000  
##  Max.   :4.000   Max.   :4.000  
## 
  1. Finally, write the results to a csv file for loading into a database.
write.csv(df, file = "Chess Tournament Results.csv", row.names = FALSE)