Loading Libraries:


library(devtools)
## Loading required package: usethis
library(RCurl)
library(plyr)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:plyr':
## 
##     arrange, count, desc, failwith, id, mutate, rename, summarise,
##     summarize
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ forcats   1.0.0     ✔ readr     2.1.5
## ✔ ggplot2   3.4.4     ✔ stringr   1.5.1
## ✔ lubridate 1.9.3     ✔ tibble    3.2.1
## ✔ purrr     1.0.2     ✔ tidyr     1.3.0
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::arrange()   masks plyr::arrange()
## ✖ purrr::compact()   masks plyr::compact()
## ✖ tidyr::complete()  masks RCurl::complete()
## ✖ dplyr::count()     masks plyr::count()
## ✖ dplyr::desc()      masks plyr::desc()
## ✖ dplyr::failwith()  masks plyr::failwith()
## ✖ dplyr::filter()    masks stats::filter()
## ✖ dplyr::id()        masks plyr::id()
## ✖ dplyr::lag()       masks stats::lag()
## ✖ dplyr::mutate()    masks plyr::mutate()
## ✖ dplyr::rename()    masks plyr::rename()
## ✖ dplyr::summarise() masks plyr::summarise()
## ✖ dplyr::summarize() masks plyr::summarize()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(DescTools)
library(ggpubr)
## 
## Attaching package: 'ggpubr'
## 
## The following object is masked from 'package:plyr':
## 
##     mutate
library(openintro)
## Loading required package: airports
## Loading required package: cherryblossom
## Loading required package: usdata
## 
## Attaching package: 'openintro'
## 
## The following object is masked from 'package:DescTools':
## 
##     cards
library (readr)
library(rvest)
## 
## Attaching package: 'rvest'
## 
## The following object is masked from 'package:readr':
## 
##     guess_encoding
Introduction:


Chess Tournament results txt file was downloaded and put into github. The data was then scrapped from github. States and player pre ratings were extracted from the text file and stored into a data frame. A matrix that stored the opponent pre ratings was constructed, then the average pre rating (of a player’s opponents) was calculated and stored into a data frame. For the final data frame for csv construction contains: Player’s Name, Player’s State, Total Number of Points, Player’s Pre-Rating, and Average Pre Chess Rating of Opponents.

c <- getURL("https://bbhosted.cuny.edu/bbcswebdav/pid-81630190-dt-content-rid-636011541_1/xid-636011541_1")
#original URL does not seem to work.


#downloading from blackboard is ill advised due to having the need to be signed in

c <- getURL("https://raw.githubusercontent.com/division-zero/Data607/main/Project1/7645617.txt")
#moved txt file to github where it would be publicly accessible. 

view(c)

c1 <- str_replace_all(c,"[|]",",")
c2 <- str_replace_all(c1,"[-]","")
#attempt to convert the string into a readable format by replacing "|" into "," removing "-"
glimpse(c2)
##  chr "\n Pair , Player Name                     ,Total,Round,Round,Round,Round,Round,Round,Round, \n Num  , USCF ID /"| __truncated__
#the text file is now similar to a csv
txt file:


The text file was converted into a readable format.

df_attempt2 <- data.frame(read.csv(text = c2))
#reading this as a csv put the data into a data frame.
glimpse(df_attempt2)
## Rows: 129
## Columns: 11
## $ Pair        <chr> " Num  ", "    1 ", "   ON ", "    2 ", "   MI ", "    3 "…
## $ Player.Name <chr> " USCF ID / Rtg (Pre>Post)       ", " GARY HUA            …
## $ Total       <chr> " Pts ", "6.0  ", "N:2  ", "6.0  ", "N:2  ", "6.0  ", "N:2…
## $ Round       <chr> "  1  ", "W  39", "W    ", "W  63", "B    ", "L   8", "W  …
## $ Round.1     <chr> "  2  ", "W  21", "B    ", "W  58", "W    ", "W  61", "B  …
## $ Round.2     <chr> "  3  ", "W  18", "W    ", "L   4", "B    ", "W  25", "W  …
## $ Round.3     <chr> "  4  ", "W  14", "B    ", "W  17", "W    ", "W  21", "B  …
## $ Round.4     <chr> "  5  ", "W   7", "W    ", "W  16", "B    ", "W  11", "W  …
## $ Round.5     <chr> "  6  ", "D  12", "B    ", "W  20", "W    ", "W  13", "B  …
## $ Round.6     <chr> "  7  ", "D   4", "W    ", "W   7", "B    ", "W  12", "W  …
## $ X           <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
data frame:


A data frame was constructed from the text file that contained all the data. The data could now be manipulated and cleaned.

newdf3 <- slice(df_attempt2, seq(1, nrow(df_attempt2), 2))
#select every other row with the scores
newdf4 <- slice(df_attempt2, seq(2, nrow(df_attempt2), 2))
#select every other row with the people
glimpse(newdf3)
## Rows: 65
## Columns: 11
## $ Pair        <chr> " Num  ", "   ON ", "   MI ", "   MI ", "   MI ", "   MI "…
## $ Player.Name <chr> " USCF ID / Rtg (Pre>Post)       ", " 15445895 / R: 1794  …
## $ Total       <chr> " Pts ", "N:2  ", "N:2  ", "N:2  ", "N:2  ", "N:2  ", "N:3…
## $ Round       <chr> "  1  ", "W    ", "B    ", "W    ", "W    ", "B    ", "W  …
## $ Round.1     <chr> "  2  ", "B    ", "W    ", "B    ", "B    ", "W    ", "B  …
## $ Round.2     <chr> "  3  ", "W    ", "B    ", "W    ", "W    ", "B    ", "W  …
## $ Round.3     <chr> "  4  ", "B    ", "W    ", "B    ", "B    ", "W    ", "B  …
## $ Round.4     <chr> "  5  ", "W    ", "B    ", "W    ", "W    ", "B    ", "B  …
## $ Round.5     <chr> "  6  ", "B    ", "W    ", "B    ", "B    ", "W    ", "W  …
## $ Round.6     <chr> "  7  ", "W    ", "B    ", "W    ", "B    ", "B    ", "B  …
## $ X           <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
glimpse(newdf4)
## Rows: 64
## Columns: 11
## $ Pair        <chr> "    1 ", "    2 ", "    3 ", "    4 ", "    5 ", "    6 "…
## $ Player.Name <chr> " GARY HUA                        ", " DAKSHESH DARURI    …
## $ Total       <chr> "6.0  ", "6.0  ", "6.0  ", "5.5  ", "5.5  ", "5.0  ", "5.0…
## $ Round       <chr> "W  39", "W  63", "L   8", "W  23", "W  45", "W  34", "W  …
## $ Round.1     <chr> "W  21", "W  58", "W  61", "D  28", "W  37", "D  29", "W  …
## $ Round.2     <chr> "W  18", "L   4", "W  25", "W   2", "D  12", "L  11", "W  …
## $ Round.3     <chr> "W  14", "W  17", "W  21", "W  26", "D  13", "W  35", "W  …
## $ Round.4     <chr> "W   7", "W  16", "W  11", "D   5", "D   4", "D  10", "L  …
## $ Round.5     <chr> "D  12", "W  20", "W  13", "W  19", "W  14", "W  27", "W  …
## $ Round.6     <chr> "D   4", "W   7", "W  12", "D   1", "W  17", "W  21", "L  …
## $ X           <lgl> NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA…
newdf5 <- cbind(newdf3[2:nrow(newdf3),1:2],newdf4)
#combine the scores and the people excluding any unnecessary columns.
newdf6 <-  subset(newdf5, select = -c(X) ) 
#subtract the column that only contains "NA"
newdf7 <- newdf6 %>% 
       rename(State = 1, Player.Score = 2, Player.Number = 3, Player.Names = 4)
#rename the columns for clarity

list1 <- lapply(newdf7[,2], function(x) str_extract(x, "R:( )*[0-9]*"))
# extract all the pre scores/ratings with R:

list2 <- lapply(list1, function(x) gsub("[^0-9]+", "",list1))
#extract all the pre scores with "R:" removed

newdf8 <- data.frame(list2)
#convert list to data frame

scoredf <- data.frame(newdf8[,1])
# remove extra columns in score data frame

newdf9 <- cbind(newdf7,scoredf)
#combine the pre ratings back into the dataframe with the other formatting removed
newdf10 <- newdf9 %>% 
       rename(Pre.Scores = 13)
# renamed the pre rating to pre scores
glimpse(newdf10)
## Rows: 64
## Columns: 13
## $ State         <chr> "   ON ", "   MI ", "   MI ", "   MI ", "   MI ", "   OH…
## $ Player.Score  <chr> " 15445895 / R: 1794   >1817     ", " 14598900 / R: 1553…
## $ Player.Number <chr> "    1 ", "    2 ", "    3 ", "    4 ", "    5 ", "    6…
## $ Player.Names  <chr> " GARY HUA                        ", " DAKSHESH DARURI  …
## $ Total         <chr> "6.0  ", "6.0  ", "6.0  ", "5.5  ", "5.5  ", "5.0  ", "5…
## $ Round         <chr> "W  39", "W  63", "L   8", "W  23", "W  45", "W  34", "W…
## $ Round.1       <chr> "W  21", "W  58", "W  61", "D  28", "W  37", "D  29", "W…
## $ Round.2       <chr> "W  18", "L   4", "W  25", "W   2", "D  12", "L  11", "W…
## $ Round.3       <chr> "W  14", "W  17", "W  21", "W  26", "D  13", "W  35", "W…
## $ Round.4       <chr> "W   7", "W  16", "W  11", "D   5", "D   4", "D  10", "L…
## $ Round.5       <chr> "D  12", "W  20", "W  13", "W  19", "W  14", "W  27", "W…
## $ Round.6       <chr> "D   4", "W   7", "W  12", "D   1", "W  17", "W  21", "L…
## $ Pre.Scores    <chr> "1794", "1553", "1384", "1716", "1655", "1686", "1649", …
view(newdf10[,6:12])
Pre Rating:


The pre rating were extracted for each player and put into a new column.

roundsdf <- data.frame(lapply(newdf10[,6:12], function(x) str_extract(x, "[0-9]+")))
#extract the person number each person played in rounds

newdf11 <- add_column(newdf10,roundsdf)
#combine the columns of the person number played and the dataframe
newdf12 <- newdf11[ -c(1,6:12) ]
#remove the extra round columns
newdf13 <- newdf12 %>% 
       rename(Round = 6, Round.1 = 7, Round.2 = 8, Round.3 = 9, Round.4 = 10, Round.5 = 11, Round.6 = 12)
#put the opponent player numbers into a dataframe.
matrixdf <- matrix(ncol = 12, nrow = 64)
for(a in 1:64){
for(i in 6:12){
g <- newdf13[a,i]
h <- scoredf[g,1]
newdf14 <- data.frame(matrixdf[a,i] <- h)
}
}
#go through  extract the player's pre rating for each player number that each player played. Store it in a matrix in positions corresponding to the player and the round. each row will have the opponent pre rating score.
as.numeric(matrixdf)
##   [1]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
##  [16]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
##  [31]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
##  [46]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
##  [61]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
##  [76]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
##  [91]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
## [106]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
## [121]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
## [136]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
## [151]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
## [166]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
## [181]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
## [196]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
## [211]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
## [226]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
## [241]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
## [256]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
## [271]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
## [286]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
## [301]   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA   NA
## [316]   NA   NA   NA   NA   NA 1436 1175 1641 1363 1242 1399 1092 1384 1745 1604
## [331] 1423 1332 1355 1270 1564 1365 1382 1362 1220 1348 1283 1163 1716 1507 1411
## [346] 1291 1011 1229 1056  935  917  955  967 1686  377 1666   NA 1712 1794 1595
## [361]  853 1663 1563   NA 1655 1438 1600 1629 1579 1602 1552 1522   NA 1610 1530
## [376]   NA 1649 1494 1403 1449 1441 1186 1553 1555 1563  917  955 1507  980 1602
## [391]  377 1441 1600 1564 1153 1449 1552 1199 1604 1220 1403 1411 1365 1291 1794
## [406]  935 1283 1362 1393 1348 1666 1716 1686 1163 1186 1641 1663  967 1423 1092
## [421] 1655 1438 1270 1579 1629 1056 1363 1610 1011 1649 1229 1175 1595 1332 1242
## [436] 1555 1745 1436 1494 1712 1355 1553   NA 1399 1384   NA 1382 1522 1600 1716
## [451] 1745 1553 1663 1712 1666 1610  853 1186 1686 1655 1649 1641 1522   NA 1579
## [466] 1794  935 1363 1362 1507 1595 1283 1384 1629  377 1555 1423 1220 1163 1199
## [481] 1056  980 1153 1011 1399 1602 1348 1436  917 1092 1229 1441  967 1552 1563
## [496]   NA 1175 1449 1355 1564   NA  955 1365 1438 1332 1403 1411 1242 1270   NA
## [511] 1291 1494 1610 1629 1563 1579 1666 1438 1712 1411 1641 1494 1649 1423 1655
## [526] 1794 1555 1436 1553 1441 1507 1403 1384 1220  917 1745 1229 1716  980 1564
## [541] 1399 1186 1365 1600 1355 1602 1686 1449 1552 1663 1604  853 1595  967 1175
## [556] 1393 1153 1056  955  935 1163  377 1092 1382 1199   NA 1522 1242 1011 1363
## [571] 1348 1332 1362   NA 1283 1291 1649 1604 1712 1655 1716 1365 1794 1362 1579
## [586] 1686 1384   NA 1449 1552 1270 1553 1363 1564 1600 1507 1348   NA 1629  967
## [601] 1399 1411 1610 1595  935 1494 1522 1011 1666 1745 1092   NA   NA   NA 1199
## [616] 1563   NA  955  853 1436 1175 1163 1641   NA  917   NA 1441 1602   NA 1220
## [631]   NA   NA 1438 1291 1283 1229 1332   NA 1242  377 1663 1595 1666 1564 1610
## [646] 1552 1411 1507 1649 1745 1399 1794 1384 1655 1449 1355 1555 1423 1716 1553
## [661] 1436 1629  980 1199 1365 1441 1686 1641 1382  955 1056 1579 1220 1712  935
## [676] 1604 1363 1600 1563 1153   NA 1163  377 1229 1186 1283 1011 1602   NA 1494
## [691] 1362 1438 1092  853 1242 1348 1393   NA 1270   NA 1522   NA   NA 1332 1716
## [706] 1649 1663 1794 1629 1563 1553 1564 1595 1600 1579 1384 1441 1494 1423   NA
## [721] 1655 1365 1641 1411 1686 1348  377 1436 1362 1712   NA 1355   NA 1056 1610
## [736] 1666 1011  935 1382 1507  955 1220 1229 1555   NA 1153 1186  853  917 1363
## [751] 1745 1438   NA 1522 1449 1399   NA 1163 1283 1332   NA 1242 1199   NA  980
## [766]   NA   NA 1270
glimpse(matrixdf)
##  chr [1:64, 1:12] NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA ...
newdf14 <- data.frame(matrixdf)
#convert matrix into a data frame
newdf14$X6 <- as.integer(newdf14$X6)
newdf14$X7 <- as.integer(newdf14$X7)
newdf14$X8 <- as.integer(newdf14$X8)
newdf14$X9 <- as.integer(newdf14$X9)
newdf14$X10 <- as.integer(newdf14$X10)
newdf14$X11 <- as.integer(newdf14$X11)
newdf14$X12 <- as.integer(newdf14$X12)
#converting the relevant columns of data frame containing players pre ratings into numbers
newdf15 = subset(newdf14, select = -c(1:5) )
glimpse(newdf15)
## Rows: 64
## Columns: 7
## $ X6  <int> 1436, 1175, 1641, 1363, 1242, 1399, 1092, 1384, 1745, 1604, 1423, …
## $ X7  <int> 1563, 917, 955, 1507, 980, 1602, 377, 1441, 1600, 1564, 1153, 1449…
## $ X8  <int> 1600, 1716, 1745, 1553, 1663, 1712, 1666, 1610, 853, 1186, 1686, 1…
## $ X9  <int> 1610, 1629, 1563, 1579, 1666, 1438, 1712, 1411, 1641, 1494, 1649, …
## $ X10 <int> 1649, 1604, 1712, 1655, 1716, 1365, 1794, 1362, 1579, 1686, 1384, …
## $ X11 <int> 1663, 1595, 1666, 1564, 1610, 1552, 1411, 1507, 1649, 1745, 1399, …
## $ X12 <int> 1716, 1649, 1663, 1794, 1629, 1563, 1553, 1564, 1595, 1600, 1579, …
#remove any extra columns that contain no values.
sapply(newdf15, class)
##        X6        X7        X8        X9       X10       X11       X12 
## "integer" "integer" "integer" "integer" "integer" "integer" "integer"
#check that the relevant columns were converted into integers.
list3 <- c(rowMeans(newdf15, na.rm=T))
averagerounddf <- data.frame(list3)

# calculate the average pre rating for each row (player). Store it in a dataframe.
list4 <- c(rowSums(newdf15, na.rm=T))
#sum the pre ratings for each row (player)
totalpreratingdf <- data.frame(list4)
#put the total pre rating into a dataframe
newdf16 <- cbind(newdf13,averagerounddf,totalpreratingdf)
#combine the data into a single dataframe including the average player pre rating
glimpse(newdf16)
## Rows: 64
## Columns: 14
## $ Player.Score  <chr> " 15445895 / R: 1794   >1817     ", " 14598900 / R: 1553…
## $ Player.Number <chr> "    1 ", "    2 ", "    3 ", "    4 ", "    5 ", "    6…
## $ Player.Names  <chr> " GARY HUA                        ", " DAKSHESH DARURI  …
## $ Total         <chr> "6.0  ", "6.0  ", "6.0  ", "5.5  ", "5.5  ", "5.0  ", "5…
## $ Pre.Scores    <chr> "1794", "1553", "1384", "1716", "1655", "1686", "1649", …
## $ Round         <chr> "39", "63", "8", "23", "45", "34", "57", "3", "25", "16"…
## $ Round.1       <chr> "21", "58", "61", "28", "37", "29", "46", "32", "18", "1…
## $ Round.2       <chr> "18", "4", "25", "2", "12", "11", "13", "14", "59", "55"…
## $ Round.3       <chr> "14", "17", "21", "26", "13", "35", "11", "9", "8", "31"…
## $ Round.4       <chr> "7", "16", "11", "5", "4", "10", "1", "47", "26", "6", "…
## $ Round.5       <chr> "12", "20", "13", "19", "14", "27", "9", "28", "7", "25"…
## $ Round.6       <chr> "4", "7", "12", "1", "17", "21", "2", "19", "20", "18", …
## $ list3         <dbl> 1605.286, 1469.286, 1563.571, 1573.571, 1500.857, 1518.7…
## $ list4         <dbl> 11237, 10285, 10945, 11015, 10506, 10631, 9605, 10279, 1…
newdf17 <- newdf16 %>% 
       rename(average_opponent_score = 13, total_pre_rating = 14)
#rename the average pre rating and total pre rating columns
Opponent’s average Pre Rating:


The average pre rating for each player’s opponents was calculated and stored into a data frame

newdf18 <- newdf17[ -c(1,6:12) ]
#remove the round columns accidentally removed the states
newdf19 <- newdf18[ -c(1,14) ]
#removed the player numbers since it was not required also the total pre ratings were meant to be removed but there was a typo
statedf <- data.frame(newdf11[,1])
#putting the states into a dataframe to be added back
newdf20 <- cbind(newdf19,statedf)
#added states back into main dataframe
newdf21 <- newdf20 |> rename(States = 6)
#rename the states column back into states
newdf21$average_opponent_score <- as.integer(newdf21$average_opponent_score)
#convert the average opponent rating  into an integer to match the assignment output "1605"
newdf22 <- newdf21[, c(1, 6, 2, 3, 4)]
#reordering the columns to the order provided in the assignment: Player’s Name, Player’s State, Total Number of Points, Player’s Pre-Rating, and Average Pre Chess Rating of Opponents
newdf22$Pre.Scores <- as.integer(newdf22$Pre.Scores)
#insuring the pre scores are of an integer data type to potentially avoid issues.
finaldf <- newdf22 |> rename("Player’s Name" = 1, "Player’s State" = 2, "Total Number of Points" = 3, "Player’s Pre-Rating" = 4,  "Average Pre Chess Rating of Opponents" = 5)
#rename the columns to the same names as provided in the assignment
view(finaldf)
Data frame format:


The dataframe was reformatted to match the assignment.

write.csv(finaldf)
## "","Player’s Name","Player’s State","Total Number of Points","Player’s Pre-Rating","Average Pre Chess Rating of Opponents"
## "2"," GARY HUA                        ","   ON ","6.0  ",1794,1605
## "3"," DAKSHESH DARURI                 ","   MI ","6.0  ",1553,1469
## "4"," ADITYA BAJAJ                    ","   MI ","6.0  ",1384,1563
## "5"," PATRICK H SCHILLING             ","   MI ","5.5  ",1716,1573
## "6"," HANSHI ZUO                      ","   MI ","5.5  ",1655,1500
## "7"," HANSEN SONG                     ","   OH ","5.0  ",1686,1518
## "8"," GARY DEE SWATHELL               ","   MI ","5.0  ",1649,1372
## "9"," EZEKIEL HOUGHTON                ","   MI ","5.0  ",1641,1468
## "10"," STEFANO LEE                     ","   ON ","5.0  ",1411,1523
## "11"," ANVIT RAO                       ","   MI ","5.0  ",1365,1554
## "12"," CAMERON WILLIAM MC LEMAN        ","   MI ","4.5  ",1712,1467
## "13"," KENNETH J TACK                  ","   MI ","4.5  ",1663,1506
## "14"," TORRANCE HENRY JR               ","   MI ","4.5  ",1666,1497
## "15"," BRADLEY SHAW                    ","   MI ","4.5  ",1610,1515
## "16"," ZACHARY JAMES HOUGHTON          ","   MI ","4.5  ",1220,1483
## "17"," MIKE NIKITIN                    ","   MI ","4.0  ",1604,1385
## "18"," RONALD GRZEGORCZYK              ","   MI ","4.0  ",1629,1498
## "19"," DAVID SUNDEEN                   ","   MI ","4.0  ",1600,1480
## "20"," DIPANKAR ROY                    ","   MI ","4.0  ",1564,1426
## "21"," JASON ZHENG                     ","   MI ","4.0  ",1595,1410
## "22"," DINH DANG BUI                   ","   ON ","4.0  ",1563,1470
## "23"," EUGENE L MCCLURE                ","   MI ","4.0  ",1555,1300
## "24"," ALAN BUI                        ","   ON ","4.0  ",1363,1213
## "25"," MICHAEL R ALDRICH               ","   MI ","4.0  ",1229,1357
## "26"," LOREN SCHWIEBERT                ","   MI ","3.5  ",1745,1363
## "27"," MAX ZHU                         ","   ON ","3.5  ",1579,1506
## "28"," GAURAV GIDWANI                  ","   MI ","3.5  ",1552,1221
## "29"," SOFIA ADINA STANESCUBELLU      ","   MI ","3.5  ",1507,1522
## "30"," CHIEDOZIE OKORIE                ","   MI ","3.5  ",1602,1313
## "31"," GEORGE AVERY JONES              ","   ON ","3.5  ",1522,1144
## "32"," RISHI SHETTY                    ","   MI ","3.5  ",1494,1259
## "33"," JOSHUA PHILIP MATHEWS           ","   ON ","3.5  ",1441,1378
## "34"," JADE GE                         ","   MI ","3.5  ",1449,1276
## "35"," MICHAEL JEFFERY THOMAS          ","   MI ","3.5  ",1399,1375
## "36"," JOSHUA DAVID LEE                ","   MI ","3.5  ",1438,1149
## "37"," SIDDHARTH JHA                   ","   MI ","3.5  ",1355,1388
## "38"," AMIYATOSH PWNANANDAM            ","   MI ","3.5  ",980,1384
## "39"," BRIAN LIU                       ","   MI ","3.0  ",1423,1539
## "40"," JOEL R HENDON                   ","   MI ","3.0  ",1436,1429
## "41"," FOREST ZHANG                    ","   MI ","3.0  ",1348,1390
## "42"," KYLE WILLIAM MURPHY             ","   MI ","3.0  ",1403,1248
## "43"," JARED GE                        ","   MI ","3.0  ",1332,1149
## "44"," ROBERT GLEN VASEY               ","   MI ","3.0  ",1283,1106
## "45"," JUSTIN D SCHILLING              ","   MI ","3.0  ",1199,1327
## "46"," DEREK YAN                       ","   MI ","3.0  ",1242,1152
## "47"," JACOB ALEXANDER LAVALLEY        ","   MI ","3.0  ",377,1357
## "48"," ERIC WRIGHT                     ","   MI ","2.5  ",1362,1392
## "49"," DANIEL KHAIN                    ","   MI ","2.5  ",1382,1355
## "50"," MICHAEL J MARTIN                ","   MI ","2.5  ",1291,1285
## "51"," SHIVAM JHA                      ","   MI ","2.5  ",1056,1296
## "52"," TEJAS AYYAGARI                  ","   MI ","2.5  ",1011,1356
## "53"," ETHAN GUO                       ","   MI ","2.5  ",935,1494
## "54"," JOSE C YBARRA                   ","   MI ","2.0  ",1393,1345
## "55"," LARRY HODGE                     ","   MI ","2.0  ",1270,1206
## "56"," ALEX KONG                       ","   MI ","2.0  ",1186,1406
## "57"," MARISA RICCI                    ","   MI ","2.0  ",1153,1414
## "58"," MICHAEL LU                      ","   MI ","2.0  ",1092,1363
## "59"," VIRAJ MOHILE                    ","   MI ","2.0  ",917,1391
## "60"," SEAN M MC CORMICK               ","   MI ","2.0  ",853,1319
## "61"," JULIA SHEN                      ","   MI ","1.5  ",967,1330
## "62"," JEZZEL FARKAS                   ","   ON ","1.5  ",955,1327
## "63"," ASHWIN BALAJI                   ","   MI ","1.0  ",1530,1186
## "64"," THOMAS JOSEPH HOSMER            ","   MI ","1.0  ",1175,1350
## "65"," BEN LI                          ","   MI ","1.0  ",1163,1263
#write a csv for the final dataframe.
Conclusion:


The data frame successfully contains the assignments parameters and a csv can be written for upload to a database.