library(tidyverse)
For this project, we have received a textfile with chess tournament results in an unusual format. The purpose of this project is to create an R markdown file that generates a CSV file with Player Name, Player State, Total Number of Points, Player’s Pre-Rating, and Average Pre Chess Rating of Opponents.
The structure of the file essentially varies by row number, with the first row being a “divider” row with no information (e.g. ——). Information is found on both the 2nd and 3rd row (or, in other words, row number mod 2 = 0 or row number mod 3 = 0). The 2nd row contains the player’s tournament number ID, name, total points, and performance against specified opponents over a maximum of 7 rounds. The 3rd row contains the player’s state, USCF ID,pre-tournament rating, post-tournament rating, norm performance level achieved at the tournament, and whether they started White or Black against an opponent (whose tournament ID number was specified in the previous row).
Only certain information from the table is relevant for this exercise. Irrelevant information includes any round that did not end in Win, Lose, or Draw, USCF ID, post-tournament rating, norm performance level, and whether the player started White or Black. Ratings denoted as provisional ratings “P” were taken simply as the pre-tournament rating with “P” and subsequent numbers ignored.
The first step in this project is to read in the textfile and separate the data, as explained in the introduction. First, I will import the text file:
tournamentinfo <- readLines("C:\\Users\\Kim\\Documents\\Data607\\tournamentinfo.txt", warn = FALSE)
tournamentinfo
## [1] "-----------------------------------------------------------------------------------------"
## [2] " Pair | Player Name |Total|Round|Round|Round|Round|Round|Round|Round| "
## [3] " Num | USCF ID / Rtg (Pre->Post) | Pts | 1 | 2 | 3 | 4 | 5 | 6 | 7 | "
## [4] "-----------------------------------------------------------------------------------------"
## [5] " 1 | GARY HUA |6.0 |W 39|W 21|W 18|W 14|W 7|D 12|D 4|"
## [6] " ON | 15445895 / R: 1794 ->1817 |N:2 |W |B |W |B |W |B |W |"
## [7] "-----------------------------------------------------------------------------------------"
## [8] " 2 | DAKSHESH DARURI |6.0 |W 63|W 58|L 4|W 17|W 16|W 20|W 7|"
## [9] " MI | 14598900 / R: 1553 ->1663 |N:2 |B |W |B |W |B |W |B |"
## [10] "-----------------------------------------------------------------------------------------"
## [11] " 3 | ADITYA BAJAJ |6.0 |L 8|W 61|W 25|W 21|W 11|W 13|W 12|"
## [12] " MI | 14959604 / R: 1384 ->1640 |N:2 |W |B |W |B |W |B |W |"
## [13] "-----------------------------------------------------------------------------------------"
## [14] " 4 | PATRICK H SCHILLING |5.5 |W 23|D 28|W 2|W 26|D 5|W 19|D 1|"
## [15] " MI | 12616049 / R: 1716 ->1744 |N:2 |W |B |W |B |W |B |B |"
## [16] "-----------------------------------------------------------------------------------------"
## [17] " 5 | HANSHI ZUO |5.5 |W 45|W 37|D 12|D 13|D 4|W 14|W 17|"
## [18] " MI | 14601533 / R: 1655 ->1690 |N:2 |B |W |B |W |B |W |B |"
## [19] "-----------------------------------------------------------------------------------------"
## [20] " 6 | HANSEN SONG |5.0 |W 34|D 29|L 11|W 35|D 10|W 27|W 21|"
## [21] " OH | 15055204 / R: 1686 ->1687 |N:3 |W |B |W |B |B |W |B |"
## [22] "-----------------------------------------------------------------------------------------"
## [23] " 7 | GARY DEE SWATHELL |5.0 |W 57|W 46|W 13|W 11|L 1|W 9|L 2|"
## [24] " MI | 11146376 / R: 1649 ->1673 |N:3 |W |B |W |B |B |W |W |"
## [25] "-----------------------------------------------------------------------------------------"
## [26] " 8 | EZEKIEL HOUGHTON |5.0 |W 3|W 32|L 14|L 9|W 47|W 28|W 19|"
## [27] " MI | 15142253 / R: 1641P17->1657P24 |N:3 |B |W |B |W |B |W |W |"
## [28] "-----------------------------------------------------------------------------------------"
## [29] " 9 | STEFANO LEE |5.0 |W 25|L 18|W 59|W 8|W 26|L 7|W 20|"
## [30] " ON | 14954524 / R: 1411 ->1564 |N:2 |W |B |W |B |W |B |B |"
## [31] "-----------------------------------------------------------------------------------------"
## [32] " 10 | ANVIT RAO |5.0 |D 16|L 19|W 55|W 31|D 6|W 25|W 18|"
## [33] " MI | 14150362 / R: 1365 ->1544 |N:3 |W |W |B |B |W |B |W |"
## [34] "-----------------------------------------------------------------------------------------"
## [35] " 11 | CAMERON WILLIAM MC LEMAN |4.5 |D 38|W 56|W 6|L 7|L 3|W 34|W 26|"
## [36] " MI | 12581589 / R: 1712 ->1696 |N:3 |B |W |B |W |B |W |B |"
## [37] "-----------------------------------------------------------------------------------------"
## [38] " 12 | KENNETH J TACK |4.5 |W 42|W 33|D 5|W 38|H |D 1|L 3|"
## [39] " MI | 12681257 / R: 1663 ->1670 |N:3 |W |B |W |B | |W |B |"
## [40] "-----------------------------------------------------------------------------------------"
## [41] " 13 | TORRANCE HENRY JR |4.5 |W 36|W 27|L 7|D 5|W 33|L 3|W 32|"
## [42] " MI | 15082995 / R: 1666 ->1662 |N:3 |B |W |B |B |W |W |B |"
## [43] "-----------------------------------------------------------------------------------------"
## [44] " 14 | BRADLEY SHAW |4.5 |W 54|W 44|W 8|L 1|D 27|L 5|W 31|"
## [45] " MI | 10131499 / R: 1610 ->1618 |N:3 |W |B |W |W |B |B |W |"
## [46] "-----------------------------------------------------------------------------------------"
## [47] " 15 | ZACHARY JAMES HOUGHTON |4.5 |D 19|L 16|W 30|L 22|W 54|W 33|W 38|"
## [48] " MI | 15619130 / R: 1220P13->1416P20 |N:3 |B |B |W |W |B |B |W |"
## [49] "-----------------------------------------------------------------------------------------"
## [50] " 16 | MIKE NIKITIN |4.0 |D 10|W 15|H |W 39|L 2|W 36|U |"
## [51] " MI | 10295068 / R: 1604 ->1613 |N:3 |B |W | |B |W |B | |"
## [52] "-----------------------------------------------------------------------------------------"
## [53] " 17 | RONALD GRZEGORCZYK |4.0 |W 48|W 41|L 26|L 2|W 23|W 22|L 5|"
## [54] " MI | 10297702 / R: 1629 ->1610 |N:3 |W |B |W |B |W |B |W |"
## [55] "-----------------------------------------------------------------------------------------"
## [56] " 18 | DAVID SUNDEEN |4.0 |W 47|W 9|L 1|W 32|L 19|W 38|L 10|"
## [57] " MI | 11342094 / R: 1600 ->1600 |N:3 |B |W |B |W |B |W |B |"
## [58] "-----------------------------------------------------------------------------------------"
## [59] " 19 | DIPANKAR ROY |4.0 |D 15|W 10|W 52|D 28|W 18|L 4|L 8|"
## [60] " MI | 14862333 / R: 1564 ->1570 |N:3 |W |B |W |B |W |W |B |"
## [61] "-----------------------------------------------------------------------------------------"
## [62] " 20 | JASON ZHENG |4.0 |L 40|W 49|W 23|W 41|W 28|L 2|L 9|"
## [63] " MI | 14529060 / R: 1595 ->1569 |N:4 |W |B |W |B |W |B |W |"
## [64] "-----------------------------------------------------------------------------------------"
## [65] " 21 | DINH DANG BUI |4.0 |W 43|L 1|W 47|L 3|W 40|W 39|L 6|"
## [66] " ON | 15495066 / R: 1563P22->1562 |N:3 |B |W |B |W |W |B |W |"
## [67] "-----------------------------------------------------------------------------------------"
## [68] " 22 | EUGENE L MCCLURE |4.0 |W 64|D 52|L 28|W 15|H |L 17|W 40|"
## [69] " MI | 12405534 / R: 1555 ->1529 |N:4 |W |B |W |B | |W |B |"
## [70] "-----------------------------------------------------------------------------------------"
## [71] " 23 | ALAN BUI |4.0 |L 4|W 43|L 20|W 58|L 17|W 37|W 46|"
## [72] " ON | 15030142 / R: 1363 ->1371 | |B |W |B |W |B |W |B |"
## [73] "-----------------------------------------------------------------------------------------"
## [74] " 24 | MICHAEL R ALDRICH |4.0 |L 28|L 47|W 43|L 25|W 60|W 44|W 39|"
## [75] " MI | 13469010 / R: 1229 ->1300 |N:4 |B |W |B |B |W |W |B |"
## [76] "-----------------------------------------------------------------------------------------"
## [77] " 25 | LOREN SCHWIEBERT |3.5 |L 9|W 53|L 3|W 24|D 34|L 10|W 47|"
## [78] " MI | 12486656 / R: 1745 ->1681 |N:4 |B |W |B |W |B |W |B |"
## [79] "-----------------------------------------------------------------------------------------"
## [80] " 26 | MAX ZHU |3.5 |W 49|W 40|W 17|L 4|L 9|D 32|L 11|"
## [81] " ON | 15131520 / R: 1579 ->1564 |N:4 |B |W |B |W |B |W |W |"
## [82] "-----------------------------------------------------------------------------------------"
## [83] " 27 | GAURAV GIDWANI |3.5 |W 51|L 13|W 46|W 37|D 14|L 6|U |"
## [84] " MI | 14476567 / R: 1552 ->1539 |N:4 |W |B |W |B |W |B | |"
## [85] "-----------------------------------------------------------------------------------------"
## [86] " 28 | SOFIA ADINA STANESCU-BELLU |3.5 |W 24|D 4|W 22|D 19|L 20|L 8|D 36|"
## [87] " MI | 14882954 / R: 1507 ->1513 |N:3 |W |W |B |W |B |B |W |"
## [88] "-----------------------------------------------------------------------------------------"
## [89] " 29 | CHIEDOZIE OKORIE |3.5 |W 50|D 6|L 38|L 34|W 52|W 48|U |"
## [90] " MI | 15323285 / R: 1602P6 ->1508P12 |N:4 |B |W |B |W |W |B | |"
## [91] "-----------------------------------------------------------------------------------------"
## [92] " 30 | GEORGE AVERY JONES |3.5 |L 52|D 64|L 15|W 55|L 31|W 61|W 50|"
## [93] " ON | 12577178 / R: 1522 ->1444 | |W |B |B |W |W |B |B |"
## [94] "-----------------------------------------------------------------------------------------"
## [95] " 31 | RISHI SHETTY |3.5 |L 58|D 55|W 64|L 10|W 30|W 50|L 14|"
## [96] " MI | 15131618 / R: 1494 ->1444 | |B |W |B |W |B |W |B |"
## [97] "-----------------------------------------------------------------------------------------"
## [98] " 32 | JOSHUA PHILIP MATHEWS |3.5 |W 61|L 8|W 44|L 18|W 51|D 26|L 13|"
## [99] " ON | 14073750 / R: 1441 ->1433 |N:4 |W |B |W |B |W |B |W |"
## [100] "-----------------------------------------------------------------------------------------"
## [101] " 33 | JADE GE |3.5 |W 60|L 12|W 50|D 36|L 13|L 15|W 51|"
## [102] " MI | 14691842 / R: 1449 ->1421 | |B |W |B |W |B |W |B |"
## [103] "-----------------------------------------------------------------------------------------"
## [104] " 34 | MICHAEL JEFFERY THOMAS |3.5 |L 6|W 60|L 37|W 29|D 25|L 11|W 52|"
## [105] " MI | 15051807 / R: 1399 ->1400 | |B |W |B |B |W |B |W |"
## [106] "-----------------------------------------------------------------------------------------"
## [107] " 35 | JOSHUA DAVID LEE |3.5 |L 46|L 38|W 56|L 6|W 57|D 52|W 48|"
## [108] " MI | 14601397 / R: 1438 ->1392 | |W |W |B |W |B |B |W |"
## [109] "-----------------------------------------------------------------------------------------"
## [110] " 36 | SIDDHARTH JHA |3.5 |L 13|W 57|W 51|D 33|H |L 16|D 28|"
## [111] " MI | 14773163 / R: 1355 ->1367 |N:4 |W |B |W |B | |W |B |"
## [112] "-----------------------------------------------------------------------------------------"
## [113] " 37 | AMIYATOSH PWNANANDAM |3.5 |B |L 5|W 34|L 27|H |L 23|W 61|"
## [114] " MI | 15489571 / R: 980P12->1077P17 | | |B |W |W | |B |W |"
## [115] "-----------------------------------------------------------------------------------------"
## [116] " 38 | BRIAN LIU |3.0 |D 11|W 35|W 29|L 12|H |L 18|L 15|"
## [117] " MI | 15108523 / R: 1423 ->1439 |N:4 |W |B |W |W | |B |B |"
## [118] "-----------------------------------------------------------------------------------------"
## [119] " 39 | JOEL R HENDON |3.0 |L 1|W 54|W 40|L 16|W 44|L 21|L 24|"
## [120] " MI | 12923035 / R: 1436P23->1413 |N:4 |B |W |B |W |B |W |W |"
## [121] "-----------------------------------------------------------------------------------------"
## [122] " 40 | FOREST ZHANG |3.0 |W 20|L 26|L 39|W 59|L 21|W 56|L 22|"
## [123] " MI | 14892710 / R: 1348 ->1346 | |B |B |W |W |B |W |W |"
## [124] "-----------------------------------------------------------------------------------------"
## [125] " 41 | KYLE WILLIAM MURPHY |3.0 |W 59|L 17|W 58|L 20|X |U |U |"
## [126] " MI | 15761443 / R: 1403P5 ->1341P9 | |B |W |B |W | | | |"
## [127] "-----------------------------------------------------------------------------------------"
## [128] " 42 | JARED GE |3.0 |L 12|L 50|L 57|D 60|D 61|W 64|W 56|"
## [129] " MI | 14462326 / R: 1332 ->1256 | |B |W |B |B |W |W |B |"
## [130] "-----------------------------------------------------------------------------------------"
## [131] " 43 | ROBERT GLEN VASEY |3.0 |L 21|L 23|L 24|W 63|W 59|L 46|W 55|"
## [132] " MI | 14101068 / R: 1283 ->1244 | |W |B |W |W |B |B |W |"
## [133] "-----------------------------------------------------------------------------------------"
## [134] " 44 | JUSTIN D SCHILLING |3.0 |B |L 14|L 32|W 53|L 39|L 24|W 59|"
## [135] " MI | 15323504 / R: 1199 ->1199 | | |W |B |B |W |B |W |"
## [136] "-----------------------------------------------------------------------------------------"
## [137] " 45 | DEREK YAN |3.0 |L 5|L 51|D 60|L 56|W 63|D 55|W 58|"
## [138] " MI | 15372807 / R: 1242 ->1191 | |W |B |W |B |W |B |W |"
## [139] "-----------------------------------------------------------------------------------------"
## [140] " 46 | JACOB ALEXANDER LAVALLEY |3.0 |W 35|L 7|L 27|L 50|W 64|W 43|L 23|"
## [141] " MI | 15490981 / R: 377P3 ->1076P10 | |B |W |B |W |B |W |W |"
## [142] "-----------------------------------------------------------------------------------------"
## [143] " 47 | ERIC WRIGHT |2.5 |L 18|W 24|L 21|W 61|L 8|D 51|L 25|"
## [144] " MI | 12533115 / R: 1362 ->1341 | |W |B |W |B |W |B |W |"
## [145] "-----------------------------------------------------------------------------------------"
## [146] " 48 | DANIEL KHAIN |2.5 |L 17|W 63|H |D 52|H |L 29|L 35|"
## [147] " MI | 14369165 / R: 1382 ->1335 | |B |W | |B | |W |B |"
## [148] "-----------------------------------------------------------------------------------------"
## [149] " 49 | MICHAEL J MARTIN |2.5 |L 26|L 20|D 63|D 64|W 58|H |U |"
## [150] " MI | 12531685 / R: 1291P12->1259P17 | |W |W |B |W |B | | |"
## [151] "-----------------------------------------------------------------------------------------"
## [152] " 50 | SHIVAM JHA |2.5 |L 29|W 42|L 33|W 46|H |L 31|L 30|"
## [153] " MI | 14773178 / R: 1056 ->1111 | |W |B |W |B | |B |W |"
## [154] "-----------------------------------------------------------------------------------------"
## [155] " 51 | TEJAS AYYAGARI |2.5 |L 27|W 45|L 36|W 57|L 32|D 47|L 33|"
## [156] " MI | 15205474 / R: 1011 ->1097 | |B |W |B |W |B |W |W |"
## [157] "-----------------------------------------------------------------------------------------"
## [158] " 52 | ETHAN GUO |2.5 |W 30|D 22|L 19|D 48|L 29|D 35|L 34|"
## [159] " MI | 14918803 / R: 935 ->1092 |N:4 |B |W |B |W |B |W |B |"
## [160] "-----------------------------------------------------------------------------------------"
## [161] " 53 | JOSE C YBARRA |2.0 |H |L 25|H |L 44|U |W 57|U |"
## [162] " MI | 12578849 / R: 1393 ->1359 | | |B | |W | |W | |"
## [163] "-----------------------------------------------------------------------------------------"
## [164] " 54 | LARRY HODGE |2.0 |L 14|L 39|L 61|B |L 15|L 59|W 64|"
## [165] " MI | 12836773 / R: 1270 ->1200 | |B |B |W | |W |B |W |"
## [166] "-----------------------------------------------------------------------------------------"
## [167] " 55 | ALEX KONG |2.0 |L 62|D 31|L 10|L 30|B |D 45|L 43|"
## [168] " MI | 15412571 / R: 1186 ->1163 | |W |B |W |B | |W |B |"
## [169] "-----------------------------------------------------------------------------------------"
## [170] " 56 | MARISA RICCI |2.0 |H |L 11|L 35|W 45|H |L 40|L 42|"
## [171] " MI | 14679887 / R: 1153 ->1140 | | |B |W |W | |B |W |"
## [172] "-----------------------------------------------------------------------------------------"
## [173] " 57 | MICHAEL LU |2.0 |L 7|L 36|W 42|L 51|L 35|L 53|B |"
## [174] " MI | 15113330 / R: 1092 ->1079 | |B |W |W |B |W |B | |"
## [175] "-----------------------------------------------------------------------------------------"
## [176] " 58 | VIRAJ MOHILE |2.0 |W 31|L 2|L 41|L 23|L 49|B |L 45|"
## [177] " MI | 14700365 / R: 917 -> 941 | |W |B |W |B |W | |B |"
## [178] "-----------------------------------------------------------------------------------------"
## [179] " 59 | SEAN M MC CORMICK |2.0 |L 41|B |L 9|L 40|L 43|W 54|L 44|"
## [180] " MI | 12841036 / R: 853 -> 878 | |W | |B |B |W |W |B |"
## [181] "-----------------------------------------------------------------------------------------"
## [182] " 60 | JULIA SHEN |1.5 |L 33|L 34|D 45|D 42|L 24|H |U |"
## [183] " MI | 14579262 / R: 967 -> 984 | |W |B |B |W |B | | |"
## [184] "-----------------------------------------------------------------------------------------"
## [185] " 61 | JEZZEL FARKAS |1.5 |L 32|L 3|W 54|L 47|D 42|L 30|L 37|"
## [186] " ON | 15771592 / R: 955P11-> 979P18 | |B |W |B |W |B |W |B |"
## [187] "-----------------------------------------------------------------------------------------"
## [188] " 62 | ASHWIN BALAJI |1.0 |W 55|U |U |U |U |U |U |"
## [189] " MI | 15219542 / R: 1530 ->1535 | |B | | | | | | |"
## [190] "-----------------------------------------------------------------------------------------"
## [191] " 63 | THOMAS JOSEPH HOSMER |1.0 |L 2|L 48|D 49|L 43|L 45|H |U |"
## [192] " MI | 15057092 / R: 1175 ->1125 | |W |B |W |B |B | | |"
## [193] "-----------------------------------------------------------------------------------------"
## [194] " 64 | BEN LI |1.0 |L 22|D 30|L 31|D 49|L 46|L 42|L 54|"
## [195] " MI | 15006561 / R: 1163 ->1112 | |B |W |W |B |W |B |B |"
## [196] "-----------------------------------------------------------------------------------------"
When looking at the data imported to tournamentinfo, I can see that there are already line numbers associated. I can use these line numbers to access each row and iterate along the character list using the seq_along() function. First, I will create an empty data frame consisting of row2 and row3. Then, I will iterate along the list and place each player’s row 2 and row 3 into the data frame.
tempTournamentInfo <- data.frame(
Row2 = character(),
Row3 = character()
)
tempTournamentInfo
## [1] Row2 Row3
## <0 rows> (or 0-length row.names)
for (i in seq_along(tournamentinfo)) {
if (i != 3) {
if (i %% 3 == 0) {
new_row <- data.frame(Row2 = tournamentinfo[i-1], Row3 = tournamentinfo[i])
tempTournamentInfo <- rbind(tempTournamentInfo, new_row)
}
}
}
tempTournamentInfo
## Row2
## 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 MC LEMAN |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|H |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 MC CORMICK |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|
## Row3
## 1 ON | 15445895 / R: 1794 ->1817 |N:2 |W |B |W |B |W |B |W |
## 2 MI | 14598900 / R: 1553 ->1663 |N:2 |B |W |B |W |B |W |B |
## 3 MI | 14959604 / R: 1384 ->1640 |N:2 |W |B |W |B |W |B |W |
## 4 MI | 12616049 / R: 1716 ->1744 |N:2 |W |B |W |B |W |B |B |
## 5 MI | 14601533 / R: 1655 ->1690 |N:2 |B |W |B |W |B |W |B |
## 6 OH | 15055204 / R: 1686 ->1687 |N:3 |W |B |W |B |B |W |B |
## 7 MI | 11146376 / R: 1649 ->1673 |N:3 |W |B |W |B |B |W |W |
## 8 MI | 15142253 / R: 1641P17->1657P24 |N:3 |B |W |B |W |B |W |W |
## 9 ON | 14954524 / R: 1411 ->1564 |N:2 |W |B |W |B |W |B |B |
## 10 MI | 14150362 / R: 1365 ->1544 |N:3 |W |W |B |B |W |B |W |
## 11 MI | 12581589 / R: 1712 ->1696 |N:3 |B |W |B |W |B |W |B |
## 12 MI | 12681257 / R: 1663 ->1670 |N:3 |W |B |W |B | |W |B |
## 13 MI | 15082995 / R: 1666 ->1662 |N:3 |B |W |B |B |W |W |B |
## 14 MI | 10131499 / R: 1610 ->1618 |N:3 |W |B |W |W |B |B |W |
## 15 MI | 15619130 / R: 1220P13->1416P20 |N:3 |B |B |W |W |B |B |W |
## 16 MI | 10295068 / R: 1604 ->1613 |N:3 |B |W | |B |W |B | |
## 17 MI | 10297702 / R: 1629 ->1610 |N:3 |W |B |W |B |W |B |W |
## 18 MI | 11342094 / R: 1600 ->1600 |N:3 |B |W |B |W |B |W |B |
## 19 MI | 14862333 / R: 1564 ->1570 |N:3 |W |B |W |B |W |W |B |
## 20 MI | 14529060 / R: 1595 ->1569 |N:4 |W |B |W |B |W |B |W |
## 21 ON | 15495066 / R: 1563P22->1562 |N:3 |B |W |B |W |W |B |W |
## 22 MI | 12405534 / R: 1555 ->1529 |N:4 |W |B |W |B | |W |B |
## 23 ON | 15030142 / R: 1363 ->1371 | |B |W |B |W |B |W |B |
## 24 MI | 13469010 / R: 1229 ->1300 |N:4 |B |W |B |B |W |W |B |
## 25 MI | 12486656 / R: 1745 ->1681 |N:4 |B |W |B |W |B |W |B |
## 26 ON | 15131520 / R: 1579 ->1564 |N:4 |B |W |B |W |B |W |W |
## 27 MI | 14476567 / R: 1552 ->1539 |N:4 |W |B |W |B |W |B | |
## 28 MI | 14882954 / R: 1507 ->1513 |N:3 |W |W |B |W |B |B |W |
## 29 MI | 15323285 / R: 1602P6 ->1508P12 |N:4 |B |W |B |W |W |B | |
## 30 ON | 12577178 / R: 1522 ->1444 | |W |B |B |W |W |B |B |
## 31 MI | 15131618 / R: 1494 ->1444 | |B |W |B |W |B |W |B |
## 32 ON | 14073750 / R: 1441 ->1433 |N:4 |W |B |W |B |W |B |W |
## 33 MI | 14691842 / R: 1449 ->1421 | |B |W |B |W |B |W |B |
## 34 MI | 15051807 / R: 1399 ->1400 | |B |W |B |B |W |B |W |
## 35 MI | 14601397 / R: 1438 ->1392 | |W |W |B |W |B |B |W |
## 36 MI | 14773163 / R: 1355 ->1367 |N:4 |W |B |W |B | |W |B |
## 37 MI | 15489571 / R: 980P12->1077P17 | | |B |W |W | |B |W |
## 38 MI | 15108523 / R: 1423 ->1439 |N:4 |W |B |W |W | |B |B |
## 39 MI | 12923035 / R: 1436P23->1413 |N:4 |B |W |B |W |B |W |W |
## 40 MI | 14892710 / R: 1348 ->1346 | |B |B |W |W |B |W |W |
## 41 MI | 15761443 / R: 1403P5 ->1341P9 | |B |W |B |W | | | |
## 42 MI | 14462326 / R: 1332 ->1256 | |B |W |B |B |W |W |B |
## 43 MI | 14101068 / R: 1283 ->1244 | |W |B |W |W |B |B |W |
## 44 MI | 15323504 / R: 1199 ->1199 | | |W |B |B |W |B |W |
## 45 MI | 15372807 / R: 1242 ->1191 | |W |B |W |B |W |B |W |
## 46 MI | 15490981 / R: 377P3 ->1076P10 | |B |W |B |W |B |W |W |
## 47 MI | 12533115 / R: 1362 ->1341 | |W |B |W |B |W |B |W |
## 48 MI | 14369165 / R: 1382 ->1335 | |B |W | |B | |W |B |
## 49 MI | 12531685 / R: 1291P12->1259P17 | |W |W |B |W |B | | |
## 50 MI | 14773178 / R: 1056 ->1111 | |W |B |W |B | |B |W |
## 51 MI | 15205474 / R: 1011 ->1097 | |B |W |B |W |B |W |W |
## 52 MI | 14918803 / R: 935 ->1092 |N:4 |B |W |B |W |B |W |B |
## 53 MI | 12578849 / R: 1393 ->1359 | | |B | |W | |W | |
## 54 MI | 12836773 / R: 1270 ->1200 | |B |B |W | |W |B |W |
## 55 MI | 15412571 / R: 1186 ->1163 | |W |B |W |B | |W |B |
## 56 MI | 14679887 / R: 1153 ->1140 | | |B |W |W | |B |W |
## 57 MI | 15113330 / R: 1092 ->1079 | |B |W |W |B |W |B | |
## 58 MI | 14700365 / R: 917 -> 941 | |W |B |W |B |W | |B |
## 59 MI | 12841036 / R: 853 -> 878 | |W | |B |B |W |W |B |
## 60 MI | 14579262 / R: 967 -> 984 | |W |B |B |W |B | | |
## 61 ON | 15771592 / R: 955P11-> 979P18 | |B |W |B |W |B |W |B |
## 62 MI | 15219542 / R: 1530 ->1535 | |B | | | | | | |
## 63 MI | 15057092 / R: 1175 ->1125 | |W |B |W |B |B | | |
## 64 MI | 15006561 / R: 1163 ->1112 | |B |W |W |B |W |B |B |
From the above, recall that each row in the dataframe now corresponds to each player. The player’s data is accessible in the columns row2 and row3, which needs to be parsed out further. I can do this with the use of the separate() function to parse out the strings in Row2 and Row3 using the pipe delimiter provided. Since the pipe character is used in regular expressions to denote an OR condition, a double backslash is needed to escape it from the regular expression and string.
tempTournamentInfo_parsed <- tempTournamentInfo %>% separate(Row2, into = c("Number","Name","TotalPoints","Round1","Round2","Round3","Round4","Round5","Round6","Round7"), sep = "\\|") %>% separate(Row3, into = c("State","Rating_raw"), sep = "\\|")
tempTournamentInfo_parsed
## Number Name TotalPoints Round1 Round2 Round3
## 1 1 GARY HUA 6.0 W 39 W 21 W 18
## 2 2 DAKSHESH DARURI 6.0 W 63 W 58 L 4
## 3 3 ADITYA BAJAJ 6.0 L 8 W 61 W 25
## 4 4 PATRICK H SCHILLING 5.5 W 23 D 28 W 2
## 5 5 HANSHI ZUO 5.5 W 45 W 37 D 12
## 6 6 HANSEN SONG 5.0 W 34 D 29 L 11
## 7 7 GARY DEE SWATHELL 5.0 W 57 W 46 W 13
## 8 8 EZEKIEL HOUGHTON 5.0 W 3 W 32 L 14
## 9 9 STEFANO LEE 5.0 W 25 L 18 W 59
## 10 10 ANVIT RAO 5.0 D 16 L 19 W 55
## 11 11 CAMERON WILLIAM MC LEMAN 4.5 D 38 W 56 W 6
## 12 12 KENNETH J TACK 4.5 W 42 W 33 D 5
## 13 13 TORRANCE HENRY JR 4.5 W 36 W 27 L 7
## 14 14 BRADLEY SHAW 4.5 W 54 W 44 W 8
## 15 15 ZACHARY JAMES HOUGHTON 4.5 D 19 L 16 W 30
## 16 16 MIKE NIKITIN 4.0 D 10 W 15 H
## 17 17 RONALD GRZEGORCZYK 4.0 W 48 W 41 L 26
## 18 18 DAVID SUNDEEN 4.0 W 47 W 9 L 1
## 19 19 DIPANKAR ROY 4.0 D 15 W 10 W 52
## 20 20 JASON ZHENG 4.0 L 40 W 49 W 23
## 21 21 DINH DANG BUI 4.0 W 43 L 1 W 47
## 22 22 EUGENE L MCCLURE 4.0 W 64 D 52 L 28
## 23 23 ALAN BUI 4.0 L 4 W 43 L 20
## 24 24 MICHAEL R ALDRICH 4.0 L 28 L 47 W 43
## 25 25 LOREN SCHWIEBERT 3.5 L 9 W 53 L 3
## 26 26 MAX ZHU 3.5 W 49 W 40 W 17
## 27 27 GAURAV GIDWANI 3.5 W 51 L 13 W 46
## 28 28 SOFIA ADINA STANESCU-BELLU 3.5 W 24 D 4 W 22
## 29 29 CHIEDOZIE OKORIE 3.5 W 50 D 6 L 38
## 30 30 GEORGE AVERY JONES 3.5 L 52 D 64 L 15
## 31 31 RISHI SHETTY 3.5 L 58 D 55 W 64
## 32 32 JOSHUA PHILIP MATHEWS 3.5 W 61 L 8 W 44
## 33 33 JADE GE 3.5 W 60 L 12 W 50
## 34 34 MICHAEL JEFFERY THOMAS 3.5 L 6 W 60 L 37
## 35 35 JOSHUA DAVID LEE 3.5 L 46 L 38 W 56
## 36 36 SIDDHARTH JHA 3.5 L 13 W 57 W 51
## 37 37 AMIYATOSH PWNANANDAM 3.5 B L 5 W 34
## 38 38 BRIAN LIU 3.0 D 11 W 35 W 29
## 39 39 JOEL R HENDON 3.0 L 1 W 54 W 40
## 40 40 FOREST ZHANG 3.0 W 20 L 26 L 39
## 41 41 KYLE WILLIAM MURPHY 3.0 W 59 L 17 W 58
## 42 42 JARED GE 3.0 L 12 L 50 L 57
## 43 43 ROBERT GLEN VASEY 3.0 L 21 L 23 L 24
## 44 44 JUSTIN D SCHILLING 3.0 B L 14 L 32
## 45 45 DEREK YAN 3.0 L 5 L 51 D 60
## 46 46 JACOB ALEXANDER LAVALLEY 3.0 W 35 L 7 L 27
## 47 47 ERIC WRIGHT 2.5 L 18 W 24 L 21
## 48 48 DANIEL KHAIN 2.5 L 17 W 63 H
## 49 49 MICHAEL J MARTIN 2.5 L 26 L 20 D 63
## 50 50 SHIVAM JHA 2.5 L 29 W 42 L 33
## 51 51 TEJAS AYYAGARI 2.5 L 27 W 45 L 36
## 52 52 ETHAN GUO 2.5 W 30 D 22 L 19
## 53 53 JOSE C YBARRA 2.0 H L 25 H
## 54 54 LARRY HODGE 2.0 L 14 L 39 L 61
## 55 55 ALEX KONG 2.0 L 62 D 31 L 10
## 56 56 MARISA RICCI 2.0 H L 11 L 35
## 57 57 MICHAEL LU 2.0 L 7 L 36 W 42
## 58 58 VIRAJ MOHILE 2.0 W 31 L 2 L 41
## 59 59 SEAN M MC CORMICK 2.0 L 41 B L 9
## 60 60 JULIA SHEN 1.5 L 33 L 34 D 45
## 61 61 JEZZEL FARKAS 1.5 L 32 L 3 W 54
## 62 62 ASHWIN BALAJI 1.0 W 55 U U
## 63 63 THOMAS JOSEPH HOSMER 1.0 L 2 L 48 D 49
## 64 64 BEN LI 1.0 L 22 D 30 L 31
## Round4 Round5 Round6 Round7 State Rating_raw
## 1 W 14 W 7 D 12 D 4 ON 15445895 / R: 1794 ->1817
## 2 W 17 W 16 W 20 W 7 MI 14598900 / R: 1553 ->1663
## 3 W 21 W 11 W 13 W 12 MI 14959604 / R: 1384 ->1640
## 4 W 26 D 5 W 19 D 1 MI 12616049 / R: 1716 ->1744
## 5 D 13 D 4 W 14 W 17 MI 14601533 / R: 1655 ->1690
## 6 W 35 D 10 W 27 W 21 OH 15055204 / R: 1686 ->1687
## 7 W 11 L 1 W 9 L 2 MI 11146376 / R: 1649 ->1673
## 8 L 9 W 47 W 28 W 19 MI 15142253 / R: 1641P17->1657P24
## 9 W 8 W 26 L 7 W 20 ON 14954524 / R: 1411 ->1564
## 10 W 31 D 6 W 25 W 18 MI 14150362 / R: 1365 ->1544
## 11 L 7 L 3 W 34 W 26 MI 12581589 / R: 1712 ->1696
## 12 W 38 H D 1 L 3 MI 12681257 / R: 1663 ->1670
## 13 D 5 W 33 L 3 W 32 MI 15082995 / R: 1666 ->1662
## 14 L 1 D 27 L 5 W 31 MI 10131499 / R: 1610 ->1618
## 15 L 22 W 54 W 33 W 38 MI 15619130 / R: 1220P13->1416P20
## 16 W 39 L 2 W 36 U MI 10295068 / R: 1604 ->1613
## 17 L 2 W 23 W 22 L 5 MI 10297702 / R: 1629 ->1610
## 18 W 32 L 19 W 38 L 10 MI 11342094 / R: 1600 ->1600
## 19 D 28 W 18 L 4 L 8 MI 14862333 / R: 1564 ->1570
## 20 W 41 W 28 L 2 L 9 MI 14529060 / R: 1595 ->1569
## 21 L 3 W 40 W 39 L 6 ON 15495066 / R: 1563P22->1562
## 22 W 15 H L 17 W 40 MI 12405534 / R: 1555 ->1529
## 23 W 58 L 17 W 37 W 46 ON 15030142 / R: 1363 ->1371
## 24 L 25 W 60 W 44 W 39 MI 13469010 / R: 1229 ->1300
## 25 W 24 D 34 L 10 W 47 MI 12486656 / R: 1745 ->1681
## 26 L 4 L 9 D 32 L 11 ON 15131520 / R: 1579 ->1564
## 27 W 37 D 14 L 6 U MI 14476567 / R: 1552 ->1539
## 28 D 19 L 20 L 8 D 36 MI 14882954 / R: 1507 ->1513
## 29 L 34 W 52 W 48 U MI 15323285 / R: 1602P6 ->1508P12
## 30 W 55 L 31 W 61 W 50 ON 12577178 / R: 1522 ->1444
## 31 L 10 W 30 W 50 L 14 MI 15131618 / R: 1494 ->1444
## 32 L 18 W 51 D 26 L 13 ON 14073750 / R: 1441 ->1433
## 33 D 36 L 13 L 15 W 51 MI 14691842 / R: 1449 ->1421
## 34 W 29 D 25 L 11 W 52 MI 15051807 / R: 1399 ->1400
## 35 L 6 W 57 D 52 W 48 MI 14601397 / R: 1438 ->1392
## 36 D 33 H L 16 D 28 MI 14773163 / R: 1355 ->1367
## 37 L 27 H L 23 W 61 MI 15489571 / R: 980P12->1077P17
## 38 L 12 H L 18 L 15 MI 15108523 / R: 1423 ->1439
## 39 L 16 W 44 L 21 L 24 MI 12923035 / R: 1436P23->1413
## 40 W 59 L 21 W 56 L 22 MI 14892710 / R: 1348 ->1346
## 41 L 20 X U U MI 15761443 / R: 1403P5 ->1341P9
## 42 D 60 D 61 W 64 W 56 MI 14462326 / R: 1332 ->1256
## 43 W 63 W 59 L 46 W 55 MI 14101068 / R: 1283 ->1244
## 44 W 53 L 39 L 24 W 59 MI 15323504 / R: 1199 ->1199
## 45 L 56 W 63 D 55 W 58 MI 15372807 / R: 1242 ->1191
## 46 L 50 W 64 W 43 L 23 MI 15490981 / R: 377P3 ->1076P10
## 47 W 61 L 8 D 51 L 25 MI 12533115 / R: 1362 ->1341
## 48 D 52 H L 29 L 35 MI 14369165 / R: 1382 ->1335
## 49 D 64 W 58 H U MI 12531685 / R: 1291P12->1259P17
## 50 W 46 H L 31 L 30 MI 14773178 / R: 1056 ->1111
## 51 W 57 L 32 D 47 L 33 MI 15205474 / R: 1011 ->1097
## 52 D 48 L 29 D 35 L 34 MI 14918803 / R: 935 ->1092
## 53 L 44 U W 57 U MI 12578849 / R: 1393 ->1359
## 54 B L 15 L 59 W 64 MI 12836773 / R: 1270 ->1200
## 55 L 30 B D 45 L 43 MI 15412571 / R: 1186 ->1163
## 56 W 45 H L 40 L 42 MI 14679887 / R: 1153 ->1140
## 57 L 51 L 35 L 53 B MI 15113330 / R: 1092 ->1079
## 58 L 23 L 49 B L 45 MI 14700365 / R: 917 -> 941
## 59 L 40 L 43 W 54 L 44 MI 12841036 / R: 853 -> 878
## 60 D 42 L 24 H U MI 14579262 / R: 967 -> 984
## 61 L 47 D 42 L 30 L 37 ON 15771592 / R: 955P11-> 979P18
## 62 U U U U MI 15219542 / R: 1530 ->1535
## 63 L 43 L 45 H U MI 15057092 / R: 1175 ->1125
## 64 D 49 L 46 L 42 L 54 MI 15006561 / R: 1163 ->1112
The new dataframe is now closer to the desired final result, but still needs some adjustment. For instance, the pre tournament rating in Rating_raw needs to be separated from the ID and post tournament ratings. This was done in a similar manner to the above, except with different separators designated. Additionally, since Wins/Losses/Draws are not important information from this exercise, the opponent’s tournament ID must be separated from the outcome of the match in each of the Round columns. This is done via the str_extract function.
tempTournamentInfo_parsed <- tempTournamentInfo_parsed %>% separate(Rating_raw, into = c("USCF","Rating_raw"), sep = ": ") %>%
separate(Rating_raw, into = c("pre_rating","post_rating"), sep = "-") %>%
separate(pre_rating, into = c("pre_rating","provisional"),sep = "P") %>% mutate(pre_rating = as.numeric(pre_rating)) %>%
subset(select = -c(post_rating,USCF,provisional))
tempTournamentInfo_parsed
## Number Name TotalPoints Round1 Round2 Round3
## 1 1 GARY HUA 6.0 W 39 W 21 W 18
## 2 2 DAKSHESH DARURI 6.0 W 63 W 58 L 4
## 3 3 ADITYA BAJAJ 6.0 L 8 W 61 W 25
## 4 4 PATRICK H SCHILLING 5.5 W 23 D 28 W 2
## 5 5 HANSHI ZUO 5.5 W 45 W 37 D 12
## 6 6 HANSEN SONG 5.0 W 34 D 29 L 11
## 7 7 GARY DEE SWATHELL 5.0 W 57 W 46 W 13
## 8 8 EZEKIEL HOUGHTON 5.0 W 3 W 32 L 14
## 9 9 STEFANO LEE 5.0 W 25 L 18 W 59
## 10 10 ANVIT RAO 5.0 D 16 L 19 W 55
## 11 11 CAMERON WILLIAM MC LEMAN 4.5 D 38 W 56 W 6
## 12 12 KENNETH J TACK 4.5 W 42 W 33 D 5
## 13 13 TORRANCE HENRY JR 4.5 W 36 W 27 L 7
## 14 14 BRADLEY SHAW 4.5 W 54 W 44 W 8
## 15 15 ZACHARY JAMES HOUGHTON 4.5 D 19 L 16 W 30
## 16 16 MIKE NIKITIN 4.0 D 10 W 15 H
## 17 17 RONALD GRZEGORCZYK 4.0 W 48 W 41 L 26
## 18 18 DAVID SUNDEEN 4.0 W 47 W 9 L 1
## 19 19 DIPANKAR ROY 4.0 D 15 W 10 W 52
## 20 20 JASON ZHENG 4.0 L 40 W 49 W 23
## 21 21 DINH DANG BUI 4.0 W 43 L 1 W 47
## 22 22 EUGENE L MCCLURE 4.0 W 64 D 52 L 28
## 23 23 ALAN BUI 4.0 L 4 W 43 L 20
## 24 24 MICHAEL R ALDRICH 4.0 L 28 L 47 W 43
## 25 25 LOREN SCHWIEBERT 3.5 L 9 W 53 L 3
## 26 26 MAX ZHU 3.5 W 49 W 40 W 17
## 27 27 GAURAV GIDWANI 3.5 W 51 L 13 W 46
## 28 28 SOFIA ADINA STANESCU-BELLU 3.5 W 24 D 4 W 22
## 29 29 CHIEDOZIE OKORIE 3.5 W 50 D 6 L 38
## 30 30 GEORGE AVERY JONES 3.5 L 52 D 64 L 15
## 31 31 RISHI SHETTY 3.5 L 58 D 55 W 64
## 32 32 JOSHUA PHILIP MATHEWS 3.5 W 61 L 8 W 44
## 33 33 JADE GE 3.5 W 60 L 12 W 50
## 34 34 MICHAEL JEFFERY THOMAS 3.5 L 6 W 60 L 37
## 35 35 JOSHUA DAVID LEE 3.5 L 46 L 38 W 56
## 36 36 SIDDHARTH JHA 3.5 L 13 W 57 W 51
## 37 37 AMIYATOSH PWNANANDAM 3.5 B L 5 W 34
## 38 38 BRIAN LIU 3.0 D 11 W 35 W 29
## 39 39 JOEL R HENDON 3.0 L 1 W 54 W 40
## 40 40 FOREST ZHANG 3.0 W 20 L 26 L 39
## 41 41 KYLE WILLIAM MURPHY 3.0 W 59 L 17 W 58
## 42 42 JARED GE 3.0 L 12 L 50 L 57
## 43 43 ROBERT GLEN VASEY 3.0 L 21 L 23 L 24
## 44 44 JUSTIN D SCHILLING 3.0 B L 14 L 32
## 45 45 DEREK YAN 3.0 L 5 L 51 D 60
## 46 46 JACOB ALEXANDER LAVALLEY 3.0 W 35 L 7 L 27
## 47 47 ERIC WRIGHT 2.5 L 18 W 24 L 21
## 48 48 DANIEL KHAIN 2.5 L 17 W 63 H
## 49 49 MICHAEL J MARTIN 2.5 L 26 L 20 D 63
## 50 50 SHIVAM JHA 2.5 L 29 W 42 L 33
## 51 51 TEJAS AYYAGARI 2.5 L 27 W 45 L 36
## 52 52 ETHAN GUO 2.5 W 30 D 22 L 19
## 53 53 JOSE C YBARRA 2.0 H L 25 H
## 54 54 LARRY HODGE 2.0 L 14 L 39 L 61
## 55 55 ALEX KONG 2.0 L 62 D 31 L 10
## 56 56 MARISA RICCI 2.0 H L 11 L 35
## 57 57 MICHAEL LU 2.0 L 7 L 36 W 42
## 58 58 VIRAJ MOHILE 2.0 W 31 L 2 L 41
## 59 59 SEAN M MC CORMICK 2.0 L 41 B L 9
## 60 60 JULIA SHEN 1.5 L 33 L 34 D 45
## 61 61 JEZZEL FARKAS 1.5 L 32 L 3 W 54
## 62 62 ASHWIN BALAJI 1.0 W 55 U U
## 63 63 THOMAS JOSEPH HOSMER 1.0 L 2 L 48 D 49
## 64 64 BEN LI 1.0 L 22 D 30 L 31
## Round4 Round5 Round6 Round7 State pre_rating
## 1 W 14 W 7 D 12 D 4 ON 1794
## 2 W 17 W 16 W 20 W 7 MI 1553
## 3 W 21 W 11 W 13 W 12 MI 1384
## 4 W 26 D 5 W 19 D 1 MI 1716
## 5 D 13 D 4 W 14 W 17 MI 1655
## 6 W 35 D 10 W 27 W 21 OH 1686
## 7 W 11 L 1 W 9 L 2 MI 1649
## 8 L 9 W 47 W 28 W 19 MI 1641
## 9 W 8 W 26 L 7 W 20 ON 1411
## 10 W 31 D 6 W 25 W 18 MI 1365
## 11 L 7 L 3 W 34 W 26 MI 1712
## 12 W 38 H D 1 L 3 MI 1663
## 13 D 5 W 33 L 3 W 32 MI 1666
## 14 L 1 D 27 L 5 W 31 MI 1610
## 15 L 22 W 54 W 33 W 38 MI 1220
## 16 W 39 L 2 W 36 U MI 1604
## 17 L 2 W 23 W 22 L 5 MI 1629
## 18 W 32 L 19 W 38 L 10 MI 1600
## 19 D 28 W 18 L 4 L 8 MI 1564
## 20 W 41 W 28 L 2 L 9 MI 1595
## 21 L 3 W 40 W 39 L 6 ON 1563
## 22 W 15 H L 17 W 40 MI 1555
## 23 W 58 L 17 W 37 W 46 ON 1363
## 24 L 25 W 60 W 44 W 39 MI 1229
## 25 W 24 D 34 L 10 W 47 MI 1745
## 26 L 4 L 9 D 32 L 11 ON 1579
## 27 W 37 D 14 L 6 U MI 1552
## 28 D 19 L 20 L 8 D 36 MI 1507
## 29 L 34 W 52 W 48 U MI 1602
## 30 W 55 L 31 W 61 W 50 ON 1522
## 31 L 10 W 30 W 50 L 14 MI 1494
## 32 L 18 W 51 D 26 L 13 ON 1441
## 33 D 36 L 13 L 15 W 51 MI 1449
## 34 W 29 D 25 L 11 W 52 MI 1399
## 35 L 6 W 57 D 52 W 48 MI 1438
## 36 D 33 H L 16 D 28 MI 1355
## 37 L 27 H L 23 W 61 MI 980
## 38 L 12 H L 18 L 15 MI 1423
## 39 L 16 W 44 L 21 L 24 MI 1436
## 40 W 59 L 21 W 56 L 22 MI 1348
## 41 L 20 X U U MI 1403
## 42 D 60 D 61 W 64 W 56 MI 1332
## 43 W 63 W 59 L 46 W 55 MI 1283
## 44 W 53 L 39 L 24 W 59 MI 1199
## 45 L 56 W 63 D 55 W 58 MI 1242
## 46 L 50 W 64 W 43 L 23 MI 377
## 47 W 61 L 8 D 51 L 25 MI 1362
## 48 D 52 H L 29 L 35 MI 1382
## 49 D 64 W 58 H U MI 1291
## 50 W 46 H L 31 L 30 MI 1056
## 51 W 57 L 32 D 47 L 33 MI 1011
## 52 D 48 L 29 D 35 L 34 MI 935
## 53 L 44 U W 57 U MI 1393
## 54 B L 15 L 59 W 64 MI 1270
## 55 L 30 B D 45 L 43 MI 1186
## 56 W 45 H L 40 L 42 MI 1153
## 57 L 51 L 35 L 53 B MI 1092
## 58 L 23 L 49 B L 45 MI 917
## 59 L 40 L 43 W 54 L 44 MI 853
## 60 D 42 L 24 H U MI 967
## 61 L 47 D 42 L 30 L 37 ON 955
## 62 U U U U MI 1530
## 63 L 43 L 45 H U MI 1175
## 64 D 49 L 46 L 42 L 54 MI 1163
tempTournamentInfo_parsed$Round1 <- str_extract(tempTournamentInfo_parsed$Round1, "(\\d\\d|\\d)")
tempTournamentInfo_parsed$Round2 <- str_extract(tempTournamentInfo_parsed$Round2, "(\\d\\d|\\d)")
tempTournamentInfo_parsed$Round3 <- str_extract(tempTournamentInfo_parsed$Round3, "(\\d\\d|\\d)")
tempTournamentInfo_parsed$Round4 <- str_extract(tempTournamentInfo_parsed$Round4, "(\\d\\d|\\d)")
tempTournamentInfo_parsed$Round5 <- str_extract(tempTournamentInfo_parsed$Round5, "(\\d\\d|\\d)")
tempTournamentInfo_parsed$Round6 <- str_extract(tempTournamentInfo_parsed$Round6, "(\\d\\d|\\d)")
tempTournamentInfo_parsed$Round7 <- str_extract(tempTournamentInfo_parsed$Round7, "(\\d\\d|\\d)")
tempTournamentInfo_parsed
## Number Name TotalPoints Round1 Round2 Round3
## 1 1 GARY HUA 6.0 39 21 18
## 2 2 DAKSHESH DARURI 6.0 63 58 4
## 3 3 ADITYA BAJAJ 6.0 8 61 25
## 4 4 PATRICK H SCHILLING 5.5 23 28 2
## 5 5 HANSHI ZUO 5.5 45 37 12
## 6 6 HANSEN SONG 5.0 34 29 11
## 7 7 GARY DEE SWATHELL 5.0 57 46 13
## 8 8 EZEKIEL HOUGHTON 5.0 3 32 14
## 9 9 STEFANO LEE 5.0 25 18 59
## 10 10 ANVIT RAO 5.0 16 19 55
## 11 11 CAMERON WILLIAM MC LEMAN 4.5 38 56 6
## 12 12 KENNETH J TACK 4.5 42 33 5
## 13 13 TORRANCE HENRY JR 4.5 36 27 7
## 14 14 BRADLEY SHAW 4.5 54 44 8
## 15 15 ZACHARY JAMES HOUGHTON 4.5 19 16 30
## 16 16 MIKE NIKITIN 4.0 10 15 <NA>
## 17 17 RONALD GRZEGORCZYK 4.0 48 41 26
## 18 18 DAVID SUNDEEN 4.0 47 9 1
## 19 19 DIPANKAR ROY 4.0 15 10 52
## 20 20 JASON ZHENG 4.0 40 49 23
## 21 21 DINH DANG BUI 4.0 43 1 47
## 22 22 EUGENE L MCCLURE 4.0 64 52 28
## 23 23 ALAN BUI 4.0 4 43 20
## 24 24 MICHAEL R ALDRICH 4.0 28 47 43
## 25 25 LOREN SCHWIEBERT 3.5 9 53 3
## 26 26 MAX ZHU 3.5 49 40 17
## 27 27 GAURAV GIDWANI 3.5 51 13 46
## 28 28 SOFIA ADINA STANESCU-BELLU 3.5 24 4 22
## 29 29 CHIEDOZIE OKORIE 3.5 50 6 38
## 30 30 GEORGE AVERY JONES 3.5 52 64 15
## 31 31 RISHI SHETTY 3.5 58 55 64
## 32 32 JOSHUA PHILIP MATHEWS 3.5 61 8 44
## 33 33 JADE GE 3.5 60 12 50
## 34 34 MICHAEL JEFFERY THOMAS 3.5 6 60 37
## 35 35 JOSHUA DAVID LEE 3.5 46 38 56
## 36 36 SIDDHARTH JHA 3.5 13 57 51
## 37 37 AMIYATOSH PWNANANDAM 3.5 <NA> 5 34
## 38 38 BRIAN LIU 3.0 11 35 29
## 39 39 JOEL R HENDON 3.0 1 54 40
## 40 40 FOREST ZHANG 3.0 20 26 39
## 41 41 KYLE WILLIAM MURPHY 3.0 59 17 58
## 42 42 JARED GE 3.0 12 50 57
## 43 43 ROBERT GLEN VASEY 3.0 21 23 24
## 44 44 JUSTIN D SCHILLING 3.0 <NA> 14 32
## 45 45 DEREK YAN 3.0 5 51 60
## 46 46 JACOB ALEXANDER LAVALLEY 3.0 35 7 27
## 47 47 ERIC WRIGHT 2.5 18 24 21
## 48 48 DANIEL KHAIN 2.5 17 63 <NA>
## 49 49 MICHAEL J MARTIN 2.5 26 20 63
## 50 50 SHIVAM JHA 2.5 29 42 33
## 51 51 TEJAS AYYAGARI 2.5 27 45 36
## 52 52 ETHAN GUO 2.5 30 22 19
## 53 53 JOSE C YBARRA 2.0 <NA> 25 <NA>
## 54 54 LARRY HODGE 2.0 14 39 61
## 55 55 ALEX KONG 2.0 62 31 10
## 56 56 MARISA RICCI 2.0 <NA> 11 35
## 57 57 MICHAEL LU 2.0 7 36 42
## 58 58 VIRAJ MOHILE 2.0 31 2 41
## 59 59 SEAN M MC CORMICK 2.0 41 <NA> 9
## 60 60 JULIA SHEN 1.5 33 34 45
## 61 61 JEZZEL FARKAS 1.5 32 3 54
## 62 62 ASHWIN BALAJI 1.0 55 <NA> <NA>
## 63 63 THOMAS JOSEPH HOSMER 1.0 2 48 49
## 64 64 BEN LI 1.0 22 30 31
## Round4 Round5 Round6 Round7 State pre_rating
## 1 14 7 12 4 ON 1794
## 2 17 16 20 7 MI 1553
## 3 21 11 13 12 MI 1384
## 4 26 5 19 1 MI 1716
## 5 13 4 14 17 MI 1655
## 6 35 10 27 21 OH 1686
## 7 11 1 9 2 MI 1649
## 8 9 47 28 19 MI 1641
## 9 8 26 7 20 ON 1411
## 10 31 6 25 18 MI 1365
## 11 7 3 34 26 MI 1712
## 12 38 <NA> 1 3 MI 1663
## 13 5 33 3 32 MI 1666
## 14 1 27 5 31 MI 1610
## 15 22 54 33 38 MI 1220
## 16 39 2 36 <NA> MI 1604
## 17 2 23 22 5 MI 1629
## 18 32 19 38 10 MI 1600
## 19 28 18 4 8 MI 1564
## 20 41 28 2 9 MI 1595
## 21 3 40 39 6 ON 1563
## 22 15 <NA> 17 40 MI 1555
## 23 58 17 37 46 ON 1363
## 24 25 60 44 39 MI 1229
## 25 24 34 10 47 MI 1745
## 26 4 9 32 11 ON 1579
## 27 37 14 6 <NA> MI 1552
## 28 19 20 8 36 MI 1507
## 29 34 52 48 <NA> MI 1602
## 30 55 31 61 50 ON 1522
## 31 10 30 50 14 MI 1494
## 32 18 51 26 13 ON 1441
## 33 36 13 15 51 MI 1449
## 34 29 25 11 52 MI 1399
## 35 6 57 52 48 MI 1438
## 36 33 <NA> 16 28 MI 1355
## 37 27 <NA> 23 61 MI 980
## 38 12 <NA> 18 15 MI 1423
## 39 16 44 21 24 MI 1436
## 40 59 21 56 22 MI 1348
## 41 20 <NA> <NA> <NA> MI 1403
## 42 60 61 64 56 MI 1332
## 43 63 59 46 55 MI 1283
## 44 53 39 24 59 MI 1199
## 45 56 63 55 58 MI 1242
## 46 50 64 43 23 MI 377
## 47 61 8 51 25 MI 1362
## 48 52 <NA> 29 35 MI 1382
## 49 64 58 <NA> <NA> MI 1291
## 50 46 <NA> 31 30 MI 1056
## 51 57 32 47 33 MI 1011
## 52 48 29 35 34 MI 935
## 53 44 <NA> 57 <NA> MI 1393
## 54 <NA> 15 59 64 MI 1270
## 55 30 <NA> 45 43 MI 1186
## 56 45 <NA> 40 42 MI 1153
## 57 51 35 53 <NA> MI 1092
## 58 23 49 <NA> 45 MI 917
## 59 40 43 54 44 MI 853
## 60 42 24 <NA> <NA> MI 967
## 61 47 42 30 37 ON 955
## 62 <NA> <NA> <NA> <NA> MI 1530
## 63 43 45 <NA> <NA> MI 1175
## 64 49 46 42 54 MI 1163
Now that the opponent ID number are available in the Round columns, they will need to be concatenated for later use.
tempTournamentInfo_opponentList <- tempTournamentInfo_parsed %>% rowwise() %>%
mutate(opponent_list = paste(na.omit(c_across(Round1:Round7)),collapse = ",")) %>%
mutate(opponent_list = strsplit(opponent_list,",")) %>%
mutate(opponent_list = list(as.integer(opponent_list))) %>%
mutate(Number = as.integer(Number), Name = trimws(Name),TotalPoints = as.numeric(TotalPoints), State = trimws(State))
I first create the final table structure with an empty data frame. Then, With the opponent list generated above, a FOR loop is created to act like a window function. For each player, a window of their opponents is created, and from there the average opponent rating can be calculated. Finally, all of the information is inserted into the final data table, finalTournamentInfo, and it is exported via the write.csv function. Quotes are set to false, as the assignment suggested the CSV may be loaded into SSMS. Dealing with the excess quotes from the CSV file when imported into SSMS would be cumbersome.
finalTournamentInfo <- data.frame(
Name = character(),
State = character(),
Total_Points = numeric(),
Pre_Rating = numeric(),
Avg_Opp_Rating = numeric()
)
for (i in seq_along(tempTournamentInfo_opponentList$Number)) {
Opp_Rating <- tempTournamentInfo_opponentList %>%
filter(Number %in% tempTournamentInfo_opponentList$opponent_list[[i]]) %>%
select(pre_rating)
Opp_Rating <- mean(Opp_Rating$pre_rating)
new_row <- data.frame(
Name = tempTournamentInfo_opponentList$Name[i],
State = tempTournamentInfo_opponentList$State[i],
Total_Points = tempTournamentInfo_opponentList$TotalPoints[i],
Pre_Rating= tempTournamentInfo_opponentList$pre_rating[i],
Avg_Opp_Rating = round(Opp_Rating,digits = 0))
finalTournamentInfo <- rbind(finalTournamentInfo, new_row)
}
finalTournamentInfo
## Name State Total_Points Pre_Rating Avg_Opp_Rating
## 1 GARY HUA ON 6.0 1794 1605
## 2 DAKSHESH DARURI MI 6.0 1553 1469
## 3 ADITYA BAJAJ MI 6.0 1384 1564
## 4 PATRICK H SCHILLING MI 5.5 1716 1574
## 5 HANSHI ZUO MI 5.5 1655 1501
## 6 HANSEN SONG OH 5.0 1686 1519
## 7 GARY DEE SWATHELL MI 5.0 1649 1372
## 8 EZEKIEL HOUGHTON MI 5.0 1641 1468
## 9 STEFANO LEE ON 5.0 1411 1523
## 10 ANVIT RAO MI 5.0 1365 1554
## 11 CAMERON WILLIAM MC LEMAN MI 4.5 1712 1468
## 12 KENNETH J TACK MI 4.5 1663 1506
## 13 TORRANCE HENRY JR MI 4.5 1666 1498
## 14 BRADLEY SHAW MI 4.5 1610 1515
## 15 ZACHARY JAMES HOUGHTON MI 4.5 1220 1484
## 16 MIKE NIKITIN MI 4.0 1604 1386
## 17 RONALD GRZEGORCZYK MI 4.0 1629 1499
## 18 DAVID SUNDEEN MI 4.0 1600 1480
## 19 DIPANKAR ROY MI 4.0 1564 1426
## 20 JASON ZHENG MI 4.0 1595 1411
## 21 DINH DANG BUI ON 4.0 1563 1470
## 22 EUGENE L MCCLURE MI 4.0 1555 1300
## 23 ALAN BUI ON 4.0 1363 1214
## 24 MICHAEL R ALDRICH MI 4.0 1229 1357
## 25 LOREN SCHWIEBERT MI 3.5 1745 1363
## 26 MAX ZHU ON 3.5 1579 1507
## 27 GAURAV GIDWANI MI 3.5 1552 1222
## 28 SOFIA ADINA STANESCU-BELLU MI 3.5 1507 1522
## 29 CHIEDOZIE OKORIE MI 3.5 1602 1314
## 30 GEORGE AVERY JONES ON 3.5 1522 1144
## 31 RISHI SHETTY MI 3.5 1494 1260
## 32 JOSHUA PHILIP MATHEWS ON 3.5 1441 1379
## 33 JADE GE MI 3.5 1449 1277
## 34 MICHAEL JEFFERY THOMAS MI 3.5 1399 1375
## 35 JOSHUA DAVID LEE MI 3.5 1438 1150
## 36 SIDDHARTH JHA MI 3.5 1355 1388
## 37 AMIYATOSH PWNANANDAM MI 3.5 980 1385
## 38 BRIAN LIU MI 3.0 1423 1539
## 39 JOEL R HENDON MI 3.0 1436 1430
## 40 FOREST ZHANG MI 3.0 1348 1391
## 41 KYLE WILLIAM MURPHY MI 3.0 1403 1248
## 42 JARED GE MI 3.0 1332 1150
## 43 ROBERT GLEN VASEY MI 3.0 1283 1107
## 44 JUSTIN D SCHILLING MI 3.0 1199 1327
## 45 DEREK YAN MI 3.0 1242 1152
## 46 JACOB ALEXANDER LAVALLEY MI 3.0 377 1358
## 47 ERIC WRIGHT MI 2.5 1362 1392
## 48 DANIEL KHAIN MI 2.5 1382 1356
## 49 MICHAEL J MARTIN MI 2.5 1291 1286
## 50 SHIVAM JHA MI 2.5 1056 1296
## 51 TEJAS AYYAGARI MI 2.5 1011 1356
## 52 ETHAN GUO MI 2.5 935 1495
## 53 JOSE C YBARRA MI 2.0 1393 1345
## 54 LARRY HODGE MI 2.0 1270 1206
## 55 ALEX KONG MI 2.0 1186 1406
## 56 MARISA RICCI MI 2.0 1153 1414
## 57 MICHAEL LU MI 2.0 1092 1363
## 58 VIRAJ MOHILE MI 2.0 917 1391
## 59 SEAN M MC CORMICK MI 2.0 853 1319
## 60 JULIA SHEN MI 1.5 967 1330
## 61 JEZZEL FARKAS ON 1.5 955 1327
## 62 ASHWIN BALAJI MI 1.0 1530 1186
## 63 THOMAS JOSEPH HOSMER MI 1.0 1175 1350
## 64 BEN LI MI 1.0 1163 1263
write.csv(finalTournamentInfo, file = "C:\\Users\\Kim\\Documents\\Data607\\finalTournamentInfo.csv", quote = FALSE)
This project provided an overview of concepts explored in previous homework. For example, this project required importing data, creating data frames, and filtering data. Regular expression concepts were implemented, such as with extracting the opponent ID from the Round columns and double escaping the pipe delimiter due to its normal use in regular expressions. The concept of a window function was used in the creation of the final table. This project also gave an introduction to the usage of FOR loops in R. For next steps in this project, I would look into a different strategy for finding the average opponent ratings, as manually creating a window seemed unnecessarily roundabout.
In this assignment, I found ChatGPT useful in understanding R and R syntax. For instance, when filtering based on the opponent list in the final data table, I was attempting to access the opponent_list via tempTournamentInfo_opponentList$opponent_list[i] instead of tempTournamentInfo_opponentList$opponent_list[[i]]. I created a number list to troubleshoot and compare the structure, and even stored the opponent list value into a vector to see if this would make a difference. I noticed that tempTournamentInfo_opponentList$opponent_list[i] was returning [[1]] before showing the number list, and asked ChatGPT for an explanation with the prompt “Why is [[1]] showing up in my vector created from taking value from df”. Their response clarified to me that the [[1]] was showing up due to the way I was accessing the elements of the data frame. By accessing it with [[i]] instead, I was able to filter based on the opponent_list. As anotherexample, in the creation of the final dataframe I originally used seq_along(tempTournamentInfo_opponentList) instead of seq_along(tempTournamentInfo_opponentList$Number). This instead sequenced along the number of columns rather than rows. I asked ChatGPT “Use seq_along with dataframe” and it showed a section on how to use seq_along() to iterate over rows. Since I am relatively new to R, I also used ChatGPT to help with syntax; for example, I wanted to use modulus in R but did not know with certainty what the modulo operator was (“R modulo operator”). However, this is an instance where the use of ChatGPT was wholly unnecessary as it could have been easily found via a search engine.