Project 1

library('dplyr')
library('glue')
library('plyr')
library('stringr')

Reading in our table using read.delim as it is pipe-delimited. We’ll skip the comment lines (i.e., “—…”) and we’ll also need to manipulate this dataframe so each player has one associated row with all their information.

github_url <- "https://raw.githubusercontent.com/andrewbowen19/cunyDATA607/main/projects/project1/tournamentinfo.txt"

df <- read.delim(github_url, sep="|", comment.char="-")
df
##       Pair                       Player.Name Total Round Round.1 Round.2
## 1    Num                  USCF ID / Rtg (Pre    NA                      
## 2       1   GARY HUA                           6.0 W  39   W  21   W  18
## 3      ON              15445895 / R: 1794       NA                      
## 4       2   DAKSHESH DARURI                    6.0 W  63   W  58   L   4
## 5      MI              14598900 / R: 1553       NA                      
## 6       3   ADITYA BAJAJ                       6.0 L   8   W  61   W  25
## 7      MI              14959604 / R: 1384       NA                      
## 8       4   PATRICK H SCHILLING                5.5 W  23   D  28   W   2
## 9      MI              12616049 / R: 1716       NA                      
## 10      5   HANSHI ZUO                         5.5 W  45   W  37   D  12
## 11     MI              14601533 / R: 1655       NA                      
## 12      6   HANSEN SONG                        5.0 W  34   D  29   L  11
## 13     OH              15055204 / R: 1686       NA                      
## 14      7   GARY DEE SWATHELL                  5.0 W  57   W  46   W  13
## 15     MI              11146376 / R: 1649       NA                      
## 16      8   EZEKIEL HOUGHTON                   5.0 W   3   W  32   L  14
## 17     MI              15142253 / R: 1641P17    NA                      
## 18      9   STEFANO LEE                        5.0 W  25   L  18   W  59
## 19     ON              14954524 / R: 1411       NA                      
## 20     10   ANVIT RAO                          5.0 D  16   L  19   W  55
## 21     MI              14150362 / R: 1365       NA                      
## 22     11   CAMERON WILLIAM MC LEMAN           4.5 D  38   W  56   W   6
## 23     MI              12581589 / R: 1712       NA                      
## 24     12   KENNETH J TACK                     4.5 W  42   W  33   D   5
## 25     MI              12681257 / R: 1663       NA                      
## 26     13   TORRANCE HENRY JR                  4.5 W  36   W  27   L   7
## 27     MI              15082995 / R: 1666       NA                      
## 28     14   BRADLEY SHAW                       4.5 W  54   W  44   W   8
## 29     MI              10131499 / R: 1610       NA                      
## 30     15   ZACHARY JAMES HOUGHTON             4.5 D  19   L  16   W  30
## 31     MI              15619130 / R: 1220P13    NA                      
## 32     16   MIKE NIKITIN                       4.0 D  10   W  15   H    
## 33     MI              10295068 / R: 1604       NA                      
## 34     17   RONALD GRZEGORCZYK                 4.0 W  48   W  41   L  26
## 35     MI              10297702 / R: 1629       NA                      
## 36     18   DAVID SUNDEEN                      4.0 W  47   W   9   L   1
## 37     MI              11342094 / R: 1600       NA                      
## 38     19   DIPANKAR ROY                       4.0 D  15   W  10   W  52
## 39     MI              14862333 / R: 1564       NA                      
## 40     20   JASON ZHENG                        4.0 L  40   W  49   W  23
## 41     MI              14529060 / R: 1595       NA                      
## 42     21   DINH DANG BUI                      4.0 W  43   L   1   W  47
## 43     ON              15495066 / R: 1563P22    NA                      
## 44     22   EUGENE L MCCLURE                   4.0 W  64   D  52   L  28
## 45     MI              12405534 / R: 1555       NA                      
## 46     23   ALAN BUI                           4.0 L   4   W  43   L  20
## 47     ON              15030142 / R: 1363       NA                      
## 48     24   MICHAEL R ALDRICH                  4.0 L  28   L  47   W  43
## 49     MI              13469010 / R: 1229       NA                      
## 50     25   LOREN SCHWIEBERT                   3.5 L   9   W  53   L   3
## 51     MI              12486656 / R: 1745       NA                      
## 52     26   MAX ZHU                            3.5 W  49   W  40   W  17
## 53     ON              15131520 / R: 1579       NA                      
## 54     27   GAURAV GIDWANI                     3.5 W  51   L  13   W  46
## 55     MI              14476567 / R: 1552       NA                      
## 56     28               SOFIA ADINA STANESCU    NA                      
## 57     MI              14882954 / R: 1507       NA                      
## 58     29   CHIEDOZIE OKORIE                   3.5 W  50   D   6   L  38
## 59     MI              15323285 / R: 1602P6     NA                      
## 60     30   GEORGE AVERY JONES                 3.5 L  52   D  64   L  15
## 61     ON              12577178 / R: 1522       NA                      
## 62     31   RISHI SHETTY                       3.5 L  58   D  55   W  64
## 63     MI              15131618 / R: 1494       NA                      
## 64     32   JOSHUA PHILIP MATHEWS              3.5 W  61   L   8   W  44
## 65     ON              14073750 / R: 1441       NA                      
## 66     33   JADE GE                            3.5 W  60   L  12   W  50
## 67     MI              14691842 / R: 1449       NA                      
## 68     34   MICHAEL JEFFERY THOMAS             3.5 L   6   W  60   L  37
## 69     MI              15051807 / R: 1399       NA                      
## 70     35   JOSHUA DAVID LEE                   3.5 L  46   L  38   W  56
## 71     MI              14601397 / R: 1438       NA                      
## 72     36   SIDDHARTH JHA                      3.5 L  13   W  57   W  51
## 73     MI              14773163 / R: 1355       NA                      
## 74     37   AMIYATOSH PWNANANDAM               3.5 B       L   5   W  34
## 75     MI              15489571 / R:  980P12    NA                      
## 76     38   BRIAN LIU                          3.0 D  11   W  35   W  29
## 77     MI              15108523 / R: 1423       NA                      
## 78     39   JOEL R HENDON                      3.0 L   1   W  54   W  40
## 79     MI              12923035 / R: 1436P23    NA                      
## 80     40   FOREST ZHANG                       3.0 W  20   L  26   L  39
## 81     MI              14892710 / R: 1348       NA                      
## 82     41   KYLE WILLIAM MURPHY                3.0 W  59   L  17   W  58
## 83     MI              15761443 / R: 1403P5     NA                      
## 84     42   JARED GE                           3.0 L  12   L  50   L  57
## 85     MI              14462326 / R: 1332       NA                      
## 86     43   ROBERT GLEN VASEY                  3.0 L  21   L  23   L  24
## 87     MI              14101068 / R: 1283       NA                      
## 88     44   JUSTIN D SCHILLING                 3.0 B       L  14   L  32
## 89     MI              15323504 / R: 1199       NA                      
## 90     45   DEREK YAN                          3.0 L   5   L  51   D  60
## 91     MI              15372807 / R: 1242       NA                      
## 92     46   JACOB ALEXANDER LAVALLEY           3.0 W  35   L   7   L  27
## 93     MI              15490981 / R:  377P3     NA                      
## 94     47   ERIC WRIGHT                        2.5 L  18   W  24   L  21
## 95     MI              12533115 / R: 1362       NA                      
## 96     48   DANIEL KHAIN                       2.5 L  17   W  63   H    
## 97     MI              14369165 / R: 1382       NA                      
## 98     49   MICHAEL J MARTIN                   2.5 L  26   L  20   D  63
## 99     MI              12531685 / R: 1291P12    NA                      
## 100    50   SHIVAM JHA                         2.5 L  29   W  42   L  33
## 101    MI              14773178 / R: 1056       NA                      
## 102    51   TEJAS AYYAGARI                     2.5 L  27   W  45   L  36
## 103    MI              15205474 / R: 1011       NA                      
## 104    52   ETHAN GUO                          2.5 W  30   D  22   L  19
## 105    MI              14918803 / R:  935       NA                      
## 106    53   JOSE C YBARRA                      2.0 H       L  25   H    
## 107    MI              12578849 / R: 1393       NA                      
## 108    54   LARRY HODGE                        2.0 L  14   L  39   L  61
## 109    MI              12836773 / R: 1270       NA                      
## 110    55   ALEX KONG                          2.0 L  62   D  31   L  10
## 111    MI              15412571 / R: 1186       NA                      
## 112    56   MARISA RICCI                       2.0 H       L  11   L  35
## 113    MI              14679887 / R: 1153       NA                      
## 114    57   MICHAEL LU                         2.0 L   7   L  36   W  42
## 115    MI              15113330 / R: 1092       NA                      
## 116    58   VIRAJ MOHILE                       2.0 W  31   L   2   L  41
## 117    MI              14700365 / R:  917       NA                      
## 118    59   SEAN M MC CORMICK                  2.0 L  41   B       L   9
## 119    MI              12841036 / R:  853       NA                      
## 120    60   JULIA SHEN                         1.5 L  33   L  34   D  45
## 121    MI              14579262 / R:  967       NA                      
## 122    61   JEZZEL FARKAS                      1.5 L  32   L   3   W  54
## 123    ON              15771592 / R:  955P11    NA                      
## 124    62   ASHWIN BALAJI                      1.0 W  55   U       U    
## 125    MI              15219542 / R: 1530       NA                      
## 126    63   THOMAS JOSEPH HOSMER               1.0 L   2   L  48   D  49
## 127    MI              15057092 / R: 1175       NA                      
## 128    64   BEN LI                             1.0 L  22   D  30   L  31
## 129    MI              15006561 / R: 1163       NA                      
##     Round.3 Round.4 Round.5 Round.6  X
## 1                                   NA
## 2     W  14   W   7   D  12   D   4 NA
## 3                                   NA
## 4     W  17   W  16   W  20   W   7 NA
## 5                                   NA
## 6     W  21   W  11   W  13   W  12 NA
## 7                                   NA
## 8     W  26   D   5   W  19   D   1 NA
## 9                                   NA
## 10    D  13   D   4   W  14   W  17 NA
## 11                                  NA
## 12    W  35   D  10   W  27   W  21 NA
## 13                                  NA
## 14    W  11   L   1   W   9   L   2 NA
## 15                                  NA
## 16    L   9   W  47   W  28   W  19 NA
## 17                                  NA
## 18    W   8   W  26   L   7   W  20 NA
## 19                                  NA
## 20    W  31   D   6   W  25   W  18 NA
## 21                                  NA
## 22    L   7   L   3   W  34   W  26 NA
## 23                                  NA
## 24    W  38   H       D   1   L   3 NA
## 25                                  NA
## 26    D   5   W  33   L   3   W  32 NA
## 27                                  NA
## 28    L   1   D  27   L   5   W  31 NA
## 29                                  NA
## 30    L  22   W  54   W  33   W  38 NA
## 31                                  NA
## 32    W  39   L   2   W  36   U     NA
## 33                                  NA
## 34    L   2   W  23   W  22   L   5 NA
## 35                                  NA
## 36    W  32   L  19   W  38   L  10 NA
## 37                                  NA
## 38    D  28   W  18   L   4   L   8 NA
## 39                                  NA
## 40    W  41   W  28   L   2   L   9 NA
## 41                                  NA
## 42    L   3   W  40   W  39   L   6 NA
## 43                                  NA
## 44    W  15   H       L  17   W  40 NA
## 45                                  NA
## 46    W  58   L  17   W  37   W  46 NA
## 47                                  NA
## 48    L  25   W  60   W  44   W  39 NA
## 49                                  NA
## 50    W  24   D  34   L  10   W  47 NA
## 51                                  NA
## 52    L   4   L   9   D  32   L  11 NA
## 53                                  NA
## 54    W  37   D  14   L   6   U     NA
## 55                                  NA
## 56                                  NA
## 57                                  NA
## 58    L  34   W  52   W  48   U     NA
## 59                                  NA
## 60    W  55   L  31   W  61   W  50 NA
## 61                                  NA
## 62    L  10   W  30   W  50   L  14 NA
## 63                                  NA
## 64    L  18   W  51   D  26   L  13 NA
## 65                                  NA
## 66    D  36   L  13   L  15   W  51 NA
## 67                                  NA
## 68    W  29   D  25   L  11   W  52 NA
## 69                                  NA
## 70    L   6   W  57   D  52   W  48 NA
## 71                                  NA
## 72    D  33   H       L  16   D  28 NA
## 73                                  NA
## 74    L  27   H       L  23   W  61 NA
## 75                                  NA
## 76    L  12   H       L  18   L  15 NA
## 77                                  NA
## 78    L  16   W  44   L  21   L  24 NA
## 79                                  NA
## 80    W  59   L  21   W  56   L  22 NA
## 81                                  NA
## 82    L  20   X       U       U     NA
## 83                                  NA
## 84    D  60   D  61   W  64   W  56 NA
## 85                                  NA
## 86    W  63   W  59   L  46   W  55 NA
## 87                                  NA
## 88    W  53   L  39   L  24   W  59 NA
## 89                                  NA
## 90    L  56   W  63   D  55   W  58 NA
## 91                                  NA
## 92    L  50   W  64   W  43   L  23 NA
## 93                                  NA
## 94    W  61   L   8   D  51   L  25 NA
## 95                                  NA
## 96    D  52   H       L  29   L  35 NA
## 97                                  NA
## 98    D  64   W  58   H       U     NA
## 99                                  NA
## 100   W  46   H       L  31   L  30 NA
## 101                                 NA
## 102   W  57   L  32   D  47   L  33 NA
## 103                                 NA
## 104   D  48   L  29   D  35   L  34 NA
## 105                                 NA
## 106   L  44   U       W  57   U     NA
## 107                                 NA
## 108   B       L  15   L  59   W  64 NA
## 109                                 NA
## 110   L  30   B       D  45   L  43 NA
## 111                                 NA
## 112   W  45   H       L  40   L  42 NA
## 113                                 NA
## 114   L  51   L  35   L  53   B     NA
## 115                                 NA
## 116   L  23   L  49   B       L  45 NA
## 117                                 NA
## 118   L  40   L  43   W  54   L  44 NA
## 119                                 NA
## 120   D  42   L  24   H       U     NA
## 121                                 NA
## 122   L  47   D  42   L  30   L  37 NA
## 123                                 NA
## 124   U       U       U       U     NA
## 125                                 NA
## 126   L  43   L  45   H       U     NA
## 127                                 NA
## 128   D  49   L  46   L  42   L  54 NA
## 129                                 NA
dat <- transform(df, state = c(Pair[-1], NA))
dat
##       Pair                       Player.Name Total Round Round.1 Round.2
## 1    Num                  USCF ID / Rtg (Pre    NA                      
## 2       1   GARY HUA                           6.0 W  39   W  21   W  18
## 3      ON              15445895 / R: 1794       NA                      
## 4       2   DAKSHESH DARURI                    6.0 W  63   W  58   L   4
## 5      MI              14598900 / R: 1553       NA                      
## 6       3   ADITYA BAJAJ                       6.0 L   8   W  61   W  25
## 7      MI              14959604 / R: 1384       NA                      
## 8       4   PATRICK H SCHILLING                5.5 W  23   D  28   W   2
## 9      MI              12616049 / R: 1716       NA                      
## 10      5   HANSHI ZUO                         5.5 W  45   W  37   D  12
## 11     MI              14601533 / R: 1655       NA                      
## 12      6   HANSEN SONG                        5.0 W  34   D  29   L  11
## 13     OH              15055204 / R: 1686       NA                      
## 14      7   GARY DEE SWATHELL                  5.0 W  57   W  46   W  13
## 15     MI              11146376 / R: 1649       NA                      
## 16      8   EZEKIEL HOUGHTON                   5.0 W   3   W  32   L  14
## 17     MI              15142253 / R: 1641P17    NA                      
## 18      9   STEFANO LEE                        5.0 W  25   L  18   W  59
## 19     ON              14954524 / R: 1411       NA                      
## 20     10   ANVIT RAO                          5.0 D  16   L  19   W  55
## 21     MI              14150362 / R: 1365       NA                      
## 22     11   CAMERON WILLIAM MC LEMAN           4.5 D  38   W  56   W   6
## 23     MI              12581589 / R: 1712       NA                      
## 24     12   KENNETH J TACK                     4.5 W  42   W  33   D   5
## 25     MI              12681257 / R: 1663       NA                      
## 26     13   TORRANCE HENRY JR                  4.5 W  36   W  27   L   7
## 27     MI              15082995 / R: 1666       NA                      
## 28     14   BRADLEY SHAW                       4.5 W  54   W  44   W   8
## 29     MI              10131499 / R: 1610       NA                      
## 30     15   ZACHARY JAMES HOUGHTON             4.5 D  19   L  16   W  30
## 31     MI              15619130 / R: 1220P13    NA                      
## 32     16   MIKE NIKITIN                       4.0 D  10   W  15   H    
## 33     MI              10295068 / R: 1604       NA                      
## 34     17   RONALD GRZEGORCZYK                 4.0 W  48   W  41   L  26
## 35     MI              10297702 / R: 1629       NA                      
## 36     18   DAVID SUNDEEN                      4.0 W  47   W   9   L   1
## 37     MI              11342094 / R: 1600       NA                      
## 38     19   DIPANKAR ROY                       4.0 D  15   W  10   W  52
## 39     MI              14862333 / R: 1564       NA                      
## 40     20   JASON ZHENG                        4.0 L  40   W  49   W  23
## 41     MI              14529060 / R: 1595       NA                      
## 42     21   DINH DANG BUI                      4.0 W  43   L   1   W  47
## 43     ON              15495066 / R: 1563P22    NA                      
## 44     22   EUGENE L MCCLURE                   4.0 W  64   D  52   L  28
## 45     MI              12405534 / R: 1555       NA                      
## 46     23   ALAN BUI                           4.0 L   4   W  43   L  20
## 47     ON              15030142 / R: 1363       NA                      
## 48     24   MICHAEL R ALDRICH                  4.0 L  28   L  47   W  43
## 49     MI              13469010 / R: 1229       NA                      
## 50     25   LOREN SCHWIEBERT                   3.5 L   9   W  53   L   3
## 51     MI              12486656 / R: 1745       NA                      
## 52     26   MAX ZHU                            3.5 W  49   W  40   W  17
## 53     ON              15131520 / R: 1579       NA                      
## 54     27   GAURAV GIDWANI                     3.5 W  51   L  13   W  46
## 55     MI              14476567 / R: 1552       NA                      
## 56     28               SOFIA ADINA STANESCU    NA                      
## 57     MI              14882954 / R: 1507       NA                      
## 58     29   CHIEDOZIE OKORIE                   3.5 W  50   D   6   L  38
## 59     MI              15323285 / R: 1602P6     NA                      
## 60     30   GEORGE AVERY JONES                 3.5 L  52   D  64   L  15
## 61     ON              12577178 / R: 1522       NA                      
## 62     31   RISHI SHETTY                       3.5 L  58   D  55   W  64
## 63     MI              15131618 / R: 1494       NA                      
## 64     32   JOSHUA PHILIP MATHEWS              3.5 W  61   L   8   W  44
## 65     ON              14073750 / R: 1441       NA                      
## 66     33   JADE GE                            3.5 W  60   L  12   W  50
## 67     MI              14691842 / R: 1449       NA                      
## 68     34   MICHAEL JEFFERY THOMAS             3.5 L   6   W  60   L  37
## 69     MI              15051807 / R: 1399       NA                      
## 70     35   JOSHUA DAVID LEE                   3.5 L  46   L  38   W  56
## 71     MI              14601397 / R: 1438       NA                      
## 72     36   SIDDHARTH JHA                      3.5 L  13   W  57   W  51
## 73     MI              14773163 / R: 1355       NA                      
## 74     37   AMIYATOSH PWNANANDAM               3.5 B       L   5   W  34
## 75     MI              15489571 / R:  980P12    NA                      
## 76     38   BRIAN LIU                          3.0 D  11   W  35   W  29
## 77     MI              15108523 / R: 1423       NA                      
## 78     39   JOEL R HENDON                      3.0 L   1   W  54   W  40
## 79     MI              12923035 / R: 1436P23    NA                      
## 80     40   FOREST ZHANG                       3.0 W  20   L  26   L  39
## 81     MI              14892710 / R: 1348       NA                      
## 82     41   KYLE WILLIAM MURPHY                3.0 W  59   L  17   W  58
## 83     MI              15761443 / R: 1403P5     NA                      
## 84     42   JARED GE                           3.0 L  12   L  50   L  57
## 85     MI              14462326 / R: 1332       NA                      
## 86     43   ROBERT GLEN VASEY                  3.0 L  21   L  23   L  24
## 87     MI              14101068 / R: 1283       NA                      
## 88     44   JUSTIN D SCHILLING                 3.0 B       L  14   L  32
## 89     MI              15323504 / R: 1199       NA                      
## 90     45   DEREK YAN                          3.0 L   5   L  51   D  60
## 91     MI              15372807 / R: 1242       NA                      
## 92     46   JACOB ALEXANDER LAVALLEY           3.0 W  35   L   7   L  27
## 93     MI              15490981 / R:  377P3     NA                      
## 94     47   ERIC WRIGHT                        2.5 L  18   W  24   L  21
## 95     MI              12533115 / R: 1362       NA                      
## 96     48   DANIEL KHAIN                       2.5 L  17   W  63   H    
## 97     MI              14369165 / R: 1382       NA                      
## 98     49   MICHAEL J MARTIN                   2.5 L  26   L  20   D  63
## 99     MI              12531685 / R: 1291P12    NA                      
## 100    50   SHIVAM JHA                         2.5 L  29   W  42   L  33
## 101    MI              14773178 / R: 1056       NA                      
## 102    51   TEJAS AYYAGARI                     2.5 L  27   W  45   L  36
## 103    MI              15205474 / R: 1011       NA                      
## 104    52   ETHAN GUO                          2.5 W  30   D  22   L  19
## 105    MI              14918803 / R:  935       NA                      
## 106    53   JOSE C YBARRA                      2.0 H       L  25   H    
## 107    MI              12578849 / R: 1393       NA                      
## 108    54   LARRY HODGE                        2.0 L  14   L  39   L  61
## 109    MI              12836773 / R: 1270       NA                      
## 110    55   ALEX KONG                          2.0 L  62   D  31   L  10
## 111    MI              15412571 / R: 1186       NA                      
## 112    56   MARISA RICCI                       2.0 H       L  11   L  35
## 113    MI              14679887 / R: 1153       NA                      
## 114    57   MICHAEL LU                         2.0 L   7   L  36   W  42
## 115    MI              15113330 / R: 1092       NA                      
## 116    58   VIRAJ MOHILE                       2.0 W  31   L   2   L  41
## 117    MI              14700365 / R:  917       NA                      
## 118    59   SEAN M MC CORMICK                  2.0 L  41   B       L   9
## 119    MI              12841036 / R:  853       NA                      
## 120    60   JULIA SHEN                         1.5 L  33   L  34   D  45
## 121    MI              14579262 / R:  967       NA                      
## 122    61   JEZZEL FARKAS                      1.5 L  32   L   3   W  54
## 123    ON              15771592 / R:  955P11    NA                      
## 124    62   ASHWIN BALAJI                      1.0 W  55   U       U    
## 125    MI              15219542 / R: 1530       NA                      
## 126    63   THOMAS JOSEPH HOSMER               1.0 L   2   L  48   D  49
## 127    MI              15057092 / R: 1175       NA                      
## 128    64   BEN LI                             1.0 L  22   D  30   L  31
## 129    MI              15006561 / R: 1163       NA                      
##     Round.3 Round.4 Round.5 Round.6  X  state
## 1                                   NA     1 
## 2     W  14   W   7   D  12   D   4 NA    ON 
## 3                                   NA     2 
## 4     W  17   W  16   W  20   W   7 NA    MI 
## 5                                   NA     3 
## 6     W  21   W  11   W  13   W  12 NA    MI 
## 7                                   NA     4 
## 8     W  26   D   5   W  19   D   1 NA    MI 
## 9                                   NA     5 
## 10    D  13   D   4   W  14   W  17 NA    MI 
## 11                                  NA     6 
## 12    W  35   D  10   W  27   W  21 NA    OH 
## 13                                  NA     7 
## 14    W  11   L   1   W   9   L   2 NA    MI 
## 15                                  NA     8 
## 16    L   9   W  47   W  28   W  19 NA    MI 
## 17                                  NA     9 
## 18    W   8   W  26   L   7   W  20 NA    ON 
## 19                                  NA    10 
## 20    W  31   D   6   W  25   W  18 NA    MI 
## 21                                  NA    11 
## 22    L   7   L   3   W  34   W  26 NA    MI 
## 23                                  NA    12 
## 24    W  38   H       D   1   L   3 NA    MI 
## 25                                  NA    13 
## 26    D   5   W  33   L   3   W  32 NA    MI 
## 27                                  NA    14 
## 28    L   1   D  27   L   5   W  31 NA    MI 
## 29                                  NA    15 
## 30    L  22   W  54   W  33   W  38 NA    MI 
## 31                                  NA    16 
## 32    W  39   L   2   W  36   U     NA    MI 
## 33                                  NA    17 
## 34    L   2   W  23   W  22   L   5 NA    MI 
## 35                                  NA    18 
## 36    W  32   L  19   W  38   L  10 NA    MI 
## 37                                  NA    19 
## 38    D  28   W  18   L   4   L   8 NA    MI 
## 39                                  NA    20 
## 40    W  41   W  28   L   2   L   9 NA    MI 
## 41                                  NA    21 
## 42    L   3   W  40   W  39   L   6 NA    ON 
## 43                                  NA    22 
## 44    W  15   H       L  17   W  40 NA    MI 
## 45                                  NA    23 
## 46    W  58   L  17   W  37   W  46 NA    ON 
## 47                                  NA    24 
## 48    L  25   W  60   W  44   W  39 NA    MI 
## 49                                  NA    25 
## 50    W  24   D  34   L  10   W  47 NA    MI 
## 51                                  NA    26 
## 52    L   4   L   9   D  32   L  11 NA    ON 
## 53                                  NA    27 
## 54    W  37   D  14   L   6   U     NA    MI 
## 55                                  NA    28 
## 56                                  NA    MI 
## 57                                  NA    29 
## 58    L  34   W  52   W  48   U     NA    MI 
## 59                                  NA    30 
## 60    W  55   L  31   W  61   W  50 NA    ON 
## 61                                  NA    31 
## 62    L  10   W  30   W  50   L  14 NA    MI 
## 63                                  NA    32 
## 64    L  18   W  51   D  26   L  13 NA    ON 
## 65                                  NA    33 
## 66    D  36   L  13   L  15   W  51 NA    MI 
## 67                                  NA    34 
## 68    W  29   D  25   L  11   W  52 NA    MI 
## 69                                  NA    35 
## 70    L   6   W  57   D  52   W  48 NA    MI 
## 71                                  NA    36 
## 72    D  33   H       L  16   D  28 NA    MI 
## 73                                  NA    37 
## 74    L  27   H       L  23   W  61 NA    MI 
## 75                                  NA    38 
## 76    L  12   H       L  18   L  15 NA    MI 
## 77                                  NA    39 
## 78    L  16   W  44   L  21   L  24 NA    MI 
## 79                                  NA    40 
## 80    W  59   L  21   W  56   L  22 NA    MI 
## 81                                  NA    41 
## 82    L  20   X       U       U     NA    MI 
## 83                                  NA    42 
## 84    D  60   D  61   W  64   W  56 NA    MI 
## 85                                  NA    43 
## 86    W  63   W  59   L  46   W  55 NA    MI 
## 87                                  NA    44 
## 88    W  53   L  39   L  24   W  59 NA    MI 
## 89                                  NA    45 
## 90    L  56   W  63   D  55   W  58 NA    MI 
## 91                                  NA    46 
## 92    L  50   W  64   W  43   L  23 NA    MI 
## 93                                  NA    47 
## 94    W  61   L   8   D  51   L  25 NA    MI 
## 95                                  NA    48 
## 96    D  52   H       L  29   L  35 NA    MI 
## 97                                  NA    49 
## 98    D  64   W  58   H       U     NA    MI 
## 99                                  NA    50 
## 100   W  46   H       L  31   L  30 NA    MI 
## 101                                 NA    51 
## 102   W  57   L  32   D  47   L  33 NA    MI 
## 103                                 NA    52 
## 104   D  48   L  29   D  35   L  34 NA    MI 
## 105                                 NA    53 
## 106   L  44   U       W  57   U     NA    MI 
## 107                                 NA    54 
## 108   B       L  15   L  59   W  64 NA    MI 
## 109                                 NA    55 
## 110   L  30   B       D  45   L  43 NA    MI 
## 111                                 NA    56 
## 112   W  45   H       L  40   L  42 NA    MI 
## 113                                 NA    57 
## 114   L  51   L  35   L  53   B     NA    MI 
## 115                                 NA    58 
## 116   L  23   L  49   B       L  45 NA    MI 
## 117                                 NA    59 
## 118   L  40   L  43   W  54   L  44 NA    MI 
## 119                                 NA    60 
## 120   D  42   L  24   H       U     NA    MI 
## 121                                 NA    61 
## 122   L  47   D  42   L  30   L  37 NA    ON 
## 123                                 NA    62 
## 124   U       U       U       U     NA    MI 
## 125                                 NA    63 
## 126   L  43   L  45   H       U     NA    MI 
## 127                                 NA    64 
## 128   D  49   L  46   L  42   L  54 NA    MI 
## 129                                 NA   <NA>

Shifting our rows so we have all of a player’s data on one line/row

df <- df %>% 
  mutate(state = c(Pair[-1], NA)) %>%
  mutate(rating = c(Player.Name[-1], NA))
head(df, 10)
##      Pair                       Player.Name Total Round Round.1 Round.2 Round.3
## 1   Num                  USCF ID / Rtg (Pre    NA                              
## 2      1   GARY HUA                           6.0 W  39   W  21   W  18   W  14
## 3     ON              15445895 / R: 1794       NA                              
## 4      2   DAKSHESH DARURI                    6.0 W  63   W  58   L   4   W  17
## 5     MI              14598900 / R: 1553       NA                              
## 6      3   ADITYA BAJAJ                       6.0 L   8   W  61   W  25   W  21
## 7     MI              14959604 / R: 1384       NA                              
## 8      4   PATRICK H SCHILLING                5.5 W  23   D  28   W   2   W  26
## 9     MI              12616049 / R: 1716       NA                              
## 10     5   HANSHI ZUO                         5.5 W  45   W  37   D  12   D  13
##    Round.4 Round.5 Round.6  X  state                            rating
## 1                          NA     1   GARY HUA                        
## 2    W   7   D  12   D   4 NA    ON              15445895 / R: 1794   
## 3                          NA     2   DAKSHESH DARURI                 
## 4    W  16   W  20   W   7 NA    MI              14598900 / R: 1553   
## 5                          NA     3   ADITYA BAJAJ                    
## 6    W  11   W  13   W  12 NA    MI              14959604 / R: 1384   
## 7                          NA     4   PATRICK H SCHILLING             
## 8    D   5   W  19   D   1 NA    MI              12616049 / R: 1716   
## 9                          NA     5   HANSHI ZUO                      
## 10   D   4   W  14   W  17 NA    MI              14601533 / R: 1655

Only want the odd rows now that they’re consolidated. Should be able to drop exces rows

odd_rows <- seq(nrow(df)) %% 2

df <- df[odd_rows == 0,]
head(df, 10)
##      Pair                       Player.Name Total Round Round.1 Round.2 Round.3
## 2      1   GARY HUA                           6.0 W  39   W  21   W  18   W  14
## 4      2   DAKSHESH DARURI                    6.0 W  63   W  58   L   4   W  17
## 6      3   ADITYA BAJAJ                       6.0 L   8   W  61   W  25   W  21
## 8      4   PATRICK H SCHILLING                5.5 W  23   D  28   W   2   W  26
## 10     5   HANSHI ZUO                         5.5 W  45   W  37   D  12   D  13
## 12     6   HANSEN SONG                        5.0 W  34   D  29   L  11   W  35
## 14     7   GARY DEE SWATHELL                  5.0 W  57   W  46   W  13   W  11
## 16     8   EZEKIEL HOUGHTON                   5.0 W   3   W  32   L  14   L   9
## 18     9   STEFANO LEE                        5.0 W  25   L  18   W  59   W   8
## 20    10   ANVIT RAO                          5.0 D  16   L  19   W  55   W  31
##    Round.4 Round.5 Round.6  X  state                 rating
## 2    W   7   D  12   D   4 NA    ON   15445895 / R: 1794   
## 4    W  16   W  20   W   7 NA    MI   14598900 / R: 1553   
## 6    W  11   W  13   W  12 NA    MI   14959604 / R: 1384   
## 8    D   5   W  19   D   1 NA    MI   12616049 / R: 1716   
## 10   D   4   W  14   W  17 NA    MI   14601533 / R: 1655   
## 12   D  10   W  27   W  21 NA    OH   15055204 / R: 1686   
## 14   L   1   W   9   L   2 NA    MI   11146376 / R: 1649   
## 16   W  47   W  28   W  19 NA    MI   15142253 / R: 1641P17
## 18   W  26   L   7   W  20 NA    ON   14954524 / R: 1411   
## 20   D   6   W  25   W  18 NA    MI   14150362 / R: 1365

Extracting the player’s rating from the rating column.

df<- df %>%
  mutate(rating = str_extract(df$rating, "R:\\s(....)"))
# Getting rid of 'R: ' prefix
df <- df %>%
  mutate(rating = gsub("R: ", "", df$rating))

# Dropping unnecessary 'X' column
df <- select(df, -X, -Round)
head(df)
##      Pair                       Player.Name Total Round.1 Round.2 Round.3
## 2      1   GARY HUA                           6.0   W  21   W  18   W  14
## 4      2   DAKSHESH DARURI                    6.0   W  58   L   4   W  17
## 6      3   ADITYA BAJAJ                       6.0   W  61   W  25   W  21
## 8      4   PATRICK H SCHILLING                5.5   D  28   W   2   W  26
## 10     5   HANSHI ZUO                         5.5   W  37   D  12   D  13
## 12     6   HANSEN SONG                        5.0   D  29   L  11   W  35
##    Round.4 Round.5 Round.6  state rating
## 2    W   7   D  12   D   4    ON    1794
## 4    W  16   W  20   W   7    MI    1553
## 6    W  11   W  13   W  12    MI    1384
## 8    D   5   W  19   D   1    MI    1716
## 10   D   4   W  14   W  17    MI    1655
## 12   D  10   W  27   W  21    OH    1686

Extracting the player opponent numbers – need to remove the numbers are we don’t necessarily care about wins, losses, etc. Also coercing the rating column to an Int type so we can average the opponent’s ratings for each player.

for (i in 1:6){
  df <- df %>%
            dplyr::mutate(across(glue('Round.{i}'), str_replace, "(W|L|B|D|H|U)\\s", '')) # Extract opponent index
            #mutate(glue('Round.{i}'), gsub( "(W|L|B|D|H|U)\\s", ""))
    }
# Coerce ratings to int type
df <- df %>%
           dplyr::mutate(rating = as.integer(rating))
head(df, 10)
##      Pair                       Player.Name Total Round.1 Round.2 Round.3
## 2      1   GARY HUA                           6.0      21      18      14
## 4      2   DAKSHESH DARURI                    6.0      58       4      17
## 6      3   ADITYA BAJAJ                       6.0      61      25      21
## 8      4   PATRICK H SCHILLING                5.5      28       2      26
## 10     5   HANSHI ZUO                         5.5      37      12      13
## 12     6   HANSEN SONG                        5.0      29      11      35
## 14     7   GARY DEE SWATHELL                  5.0      46      13      11
## 16     8   EZEKIEL HOUGHTON                   5.0      32      14       9
## 18     9   STEFANO LEE                        5.0      18      59       8
## 20    10   ANVIT RAO                          5.0      19      55      31
##    Round.4 Round.5 Round.6  state rating
## 2        7      12       4    ON    1794
## 4       16      20       7    MI    1553
## 6       11      13      12    MI    1384
## 8        5      19       1    MI    1716
## 10       4      14      17    MI    1655
## 12      10      27      21    OH    1686
## 14       1       9       2    MI    1649
## 16      47      28      19    MI    1641
## 18      26       7      20    ON    1411
## 20       6      25      18    MI    1365

Looking up opponents’ ratings for each player. Could likely vectorize this functionality to apply on a column basis.

# Iterate over each player, need to grab each opponent's rankings
for (i in 1:nrow(df)) {
  # Need to calculate these metrics for each player
  rating_sum <- 0
  n_games_by_player <- 0 
  avg_rating <- 0
  
  # Then need to average against # of games player (which won't be 6 for each player)
  for (j in 1:6) {
    if (is.na(df[i, j])) {
      print("No game played.")
    }
    else {
      opponent_num <- as.integer(df[i, glue("Round.{j}")])
      print(glue("Opponent num {opponent_num}"))
      n_games_by_player <- n_games_by_player + 1
      rating_sum <- rating_sum + df[opponent_num, 'rating']

    }
  }
  # Calculating average rating of opponents based on # of games played.
  avg_rating <- rating_sum / n_games_by_player
  print(glue("Avg rating: {avg_rating}"))
  df$opp_rating[i] <- avg_rating

}
## Opponent num 21
## Opponent num 18
## Opponent num 14
## Opponent num 7
## Opponent num 12
## Opponent num 4
## Avg rating: 1633.5
## Opponent num 58
## Opponent num 4
## Opponent num 17
## Opponent num 16
## Opponent num 20
## Opponent num 7
## Avg rating: 1518.33333333333
## Opponent num 61
## Opponent num 25
## Opponent num 21
## Opponent num 11
## Opponent num 13
## Opponent num 12
## Avg rating: 1550.66666666667
## Opponent num 28
## Opponent num 2
## Opponent num 26
## Opponent num 5
## Opponent num 19
## Opponent num 1
## Avg rating: 1608.66666666667
## Opponent num 37
## Opponent num 12
## Opponent num 13
## Opponent num 4
## Opponent num 14
## Opponent num 17
## Avg rating: 1544
## Opponent num 29
## Opponent num 11
## Opponent num 35
## Opponent num 10
## Opponent num 27
## Opponent num 21
## Avg rating: 1538.66666666667
## Opponent num 46
## Opponent num 13
## Opponent num 11
## Opponent num 1
## Opponent num 9
## Opponent num 2
## Avg rating: 1418.83333333333
## Opponent num 32
## Opponent num 14
## Opponent num 9
## Opponent num 47
## Opponent num 28
## Opponent num 19
## Avg rating: 1482.5
## Opponent num 18
## Opponent num 59
## Opponent num 8
## Opponent num 26
## Opponent num 7
## Opponent num 20
## Avg rating: 1486.16666666667
## Opponent num 19
## Opponent num 55
## Opponent num 31
## Opponent num 6
## Opponent num 25
## Opponent num 18
## Avg rating: 1545.83333333333
## Opponent num 56
## Opponent num 6
## Opponent num 7
## Opponent num 3
## Opponent num 34
## Opponent num 26
## Avg rating: 1475
## Opponent num 33
## Opponent num 5
## Opponent num 38
## Opponent num NA
## Opponent num 1
## Opponent num 3
## Avg rating: NA
## Opponent num 27
## Opponent num 7
## Opponent num 5
## Opponent num 33
## Opponent num 3
## Opponent num 32
## Avg rating: 1521.66666666667
## Opponent num 44
## Opponent num 8
## Opponent num 1
## Opponent num 27
## Opponent num 5
## Opponent num 31
## Avg rating: 1555.83333333333
## Opponent num 16
## Opponent num 30
## Opponent num 22
## Opponent num 54
## Opponent num 33
## Opponent num 38
## Avg rating: 1470.5
## Opponent num 15
## Opponent num NA
## Opponent num 39
## Opponent num 2
## Opponent num 36
## Opponent num NA
## Avg rating: NA
## Opponent num 41
## Opponent num 26
## Opponent num 2
## Opponent num 23
## Opponent num 22
## Opponent num 5
## Avg rating: 1518
## Opponent num 9
## Opponent num 1
## Opponent num 32
## Opponent num 19
## Opponent num 38
## Opponent num 10
## Avg rating: 1499.66666666667
## Opponent num 10
## Opponent num 52
## Opponent num 28
## Opponent num 18
## Opponent num 4
## Opponent num 8
## Avg rating: 1460.66666666667
## Opponent num 49
## Opponent num 23
## Opponent num 41
## Opponent num 28
## Opponent num 2
## Opponent num 9
## Avg rating: 1421.33333333333
## Opponent num 1
## Opponent num 47
## Opponent num 3
## Opponent num 40
## Opponent num 39
## Opponent num 6
## Avg rating: 1501.66666666667
## Opponent num 52
## Opponent num 28
## Opponent num 15
## Opponent num NA
## Opponent num 17
## Opponent num 40
## Avg rating: NA
## Opponent num 43
## Opponent num 20
## Opponent num 58
## Opponent num 17
## Opponent num 37
## Opponent num 46
## Avg rating: 1130.16666666667
## Opponent num 47
## Opponent num 43
## Opponent num 25
## Opponent num 60
## Opponent num 44
## Opponent num 39
## Avg rating: 1332
## Opponent num 53
## Opponent num 3
## Opponent num 24
## Opponent num 34
## Opponent num 10
## Opponent num 47
## Avg rating: 1355.33333333333
## Opponent num 40
## Opponent num 17
## Opponent num 4
## Opponent num 9
## Opponent num 32
## Opponent num 11
## Avg rating: 1542.83333333333
## Opponent num 13
## Opponent num 46
## Opponent num 37
## Opponent num 14
## Opponent num 6
## Opponent num NA
## Avg rating: NA
## Opponent num NA
## Opponent num NA
## [1] "No game played."
## Opponent num NA
## Opponent num NA
## Opponent num NA
## Avg rating: NA
## Opponent num 6
## Opponent num 38
## Opponent num 34
## Opponent num 52
## Opponent num 48
## Opponent num NA
## Avg rating: NA
## Opponent num 64
## Opponent num 15
## Opponent num 55
## Opponent num 31
## Opponent num 61
## Opponent num 50
## Avg rating: 1179
## Opponent num 55
## Opponent num 64
## Opponent num 10
## Opponent num 30
## Opponent num 50
## Opponent num 14
## Avg rating: 1317
## Opponent num 8
## Opponent num 44
## Opponent num 18
## Opponent num 51
## Opponent num 26
## Opponent num 13
## Avg rating: 1449.33333333333
## Opponent num 12
## Opponent num 50
## Opponent num 36
## Opponent num 13
## Opponent num 15
## Opponent num 51
## Avg rating: 1328.5
## Opponent num 60
## Opponent num 37
## Opponent num 29
## Opponent num 25
## Opponent num 11
## Opponent num 52
## Avg rating: 1323.5
## Opponent num 38
## Opponent num 56
## Opponent num 6
## Opponent num 57
## Opponent num 52
## Opponent num 48
## Avg rating: 1278.5
## Opponent num 57
## Opponent num 51
## Opponent num 33
## Opponent num NA
## Opponent num 16
## Opponent num 28
## Avg rating: NA
## Opponent num 5
## Opponent num 34
## Opponent num 27
## Opponent num NA
## Opponent num 23
## Opponent num 61
## Avg rating: NA
## Opponent num 35
## Opponent num 29
## Opponent num 12
## Opponent num NA
## Opponent num 18
## Opponent num 15
## Avg rating: NA
## Opponent num 54
## Opponent num 40
## Opponent num 16
## Opponent num 44
## Opponent num 21
## Opponent num 24
## Avg rating: 1368.83333333333
## Opponent num 26
## Opponent num 39
## Opponent num 59
## Opponent num 21
## Opponent num 56
## Opponent num 22
## Avg rating: 1356.5
## Opponent num 17
## Opponent num 58
## Opponent num 20
## Warning: NAs introduced by coercion
## Opponent num NA
## Opponent num NA
## Opponent num NA
## Avg rating: NA
## Opponent num 50
## Opponent num 57
## Opponent num 60
## Opponent num 61
## Opponent num 64
## Opponent num 56
## Avg rating: 1064.33333333333
## Opponent num 23
## Opponent num 24
## Opponent num 63
## Opponent num 59
## Opponent num 46
## Opponent num 55
## Avg rating: 1030.5
## Opponent num 14
## Opponent num 32
## Opponent num 53
## Opponent num 39
## Opponent num 24
## Opponent num 59
## Avg rating: 1327
## Opponent num 51
## Opponent num 60
## Opponent num 56
## Opponent num 63
## Opponent num 55
## Opponent num 58
## Avg rating: 1068.16666666667
## Opponent num 7
## Opponent num 27
## Opponent num 50
## Opponent num 64
## Opponent num 43
## Opponent num 23
## Avg rating: 1344.33333333333
## Opponent num 24
## Opponent num 21
## Opponent num 61
## Opponent num 8
## Opponent num 51
## Opponent num 25
## Avg rating: 1357.33333333333
## Opponent num 63
## Opponent num NA
## Opponent num 52
## Opponent num NA
## Opponent num 29
## Opponent num 35
## Avg rating: NA
## Opponent num 20
## Opponent num 63
## Opponent num 64
## Opponent num 58
## Opponent num NA
## Opponent num NA
## Avg rating: NA
## Opponent num 42
## Opponent num 33
## Opponent num 46
## Opponent num NA
## Opponent num 31
## Opponent num 30
## Avg rating: NA
## Opponent num 45
## Opponent num 36
## Opponent num 57
## Opponent num 32
## Opponent num 47
## Opponent num 33
## Avg rating: 1323.5
## Opponent num 22
## Opponent num 19
## Opponent num 48
## Opponent num 29
## Opponent num 35
## Opponent num 34
## Avg rating: 1490
## Opponent num 25
## Opponent num NA
## Opponent num 44
## Opponent num NA
## Opponent num 57
## Opponent num NA
## Avg rating: NA
## Opponent num 39
## Opponent num 61
## Opponent num NA
## Opponent num 15
## Opponent num 59
## Opponent num 64
## Avg rating: NA
## Opponent num 31
## Opponent num 10
## Opponent num 30
## Opponent num NA
## Opponent num 45
## Opponent num 43
## Avg rating: NA
## Opponent num 11
## Opponent num 35
## Opponent num 45
## Opponent num NA
## Opponent num 40
## Opponent num 42
## Avg rating: NA
## Opponent num 36
## Opponent num 42
## Opponent num 51
## Opponent num 35
## Opponent num 53
## Opponent num NA
## Avg rating: NA
## Opponent num 2
## Opponent num 41
## Opponent num 23
## Opponent num 49
## Opponent num NA
## Opponent num 45
## Avg rating: NA
## Opponent num NA
## Opponent num 9
## Opponent num 40
## Opponent num 43
## Opponent num 54
## Opponent num 44
## Avg rating: NA
## Opponent num 34
## Opponent num 45
## Opponent num 42
## Opponent num 24
## Opponent num NA
## Opponent num NA
## Avg rating: NA
## Opponent num 3
## Opponent num 54
## Opponent num 47
## Opponent num 42
## Opponent num 30
## Opponent num 37
## Avg rating: 1308.33333333333
## Opponent num NA
## Opponent num NA
## Opponent num NA
## Opponent num NA
## Opponent num NA
## Opponent num NA
## Avg rating: NA
## Opponent num 48
## Opponent num 49
## Opponent num 43
## Opponent num 45
## Opponent num NA
## Opponent num NA
## Avg rating: NA
## Opponent num 30
## Opponent num 31
## Opponent num 49
## Opponent num 46
## Opponent num 42
## Opponent num 54
## Avg rating: 1214.33333333333
head(df, 10)
##      Pair                       Player.Name Total Round.1 Round.2 Round.3
## 2      1   GARY HUA                           6.0      21      18      14
## 4      2   DAKSHESH DARURI                    6.0      58       4      17
## 6      3   ADITYA BAJAJ                       6.0      61      25      21
## 8      4   PATRICK H SCHILLING                5.5      28       2      26
## 10     5   HANSHI ZUO                         5.5      37      12      13
## 12     6   HANSEN SONG                        5.0      29      11      35
## 14     7   GARY DEE SWATHELL                  5.0      46      13      11
## 16     8   EZEKIEL HOUGHTON                   5.0      32      14       9
## 18     9   STEFANO LEE                        5.0      18      59       8
## 20    10   ANVIT RAO                          5.0      19      55      31
##    Round.4 Round.5 Round.6  state rating opp_rating
## 2        7      12       4    ON    1794   1633.500
## 4       16      20       7    MI    1553   1518.333
## 6       11      13      12    MI    1384   1550.667
## 8        5      19       1    MI    1716   1608.667
## 10       4      14      17    MI    1655   1544.000
## 12      10      27      21    OH    1686   1538.667
## 14       1       9       2    MI    1649   1418.833
## 16      47      28      19    MI    1641   1482.500
## 18      26       7      20    ON    1411   1486.167
## 20       6      25      18    MI    1365   1545.833

Only selecting columns we weant and renaming them.

df <- df %>% 
    select(Pair, Player.Name, state, Total, rating, opp_rating) %>%
    plyr::rename(c("Pair"="no",
                   "Player.Name" = "name",
                   "Total" = "total",
                   "rating" = "pre_rating",
                   "opp_rating" = "avg_opp_rating"))

head(df)
##        no                              name  state total pre_rating
## 2      1   GARY HUA                            ON    6.0       1794
## 4      2   DAKSHESH DARURI                     MI    6.0       1553
## 6      3   ADITYA BAJAJ                        MI    6.0       1384
## 8      4   PATRICK H SCHILLING                 MI    5.5       1716
## 10     5   HANSHI ZUO                          MI    5.5       1655
## 12     6   HANSEN SONG                         OH    5.0       1686
##    avg_opp_rating
## 2        1633.500
## 4        1518.333
## 6        1550.667
## 8        1608.667
## 10       1544.000
## 12       1538.667

Write to a csv as ouput

write.csv(df, "elo-ratings-cleaned.csv")