library(stringr)
data <- "data.txt"
lines <- readLines(data)
index <- !(1:length(lines) %in% seq(1,length(lines),3) )
lines <- lines[index]
table <- data.frame()
for (i in 1:length(lines))
{
line<-unlist(str_extract_all(lines[i], "[a-zA-Z0-9->:/(). ]{1,}\\|"))
line<-str_replace_all(line,"\\|",'')
line<-as.vector(line)
if (i>1)
{row<-t(as.data.frame(line))
table<-rbind(table,row)
}
else
{head <- line}
}
rownames(table) <- c()
names(table) <- head
name <-c()
state <-c()
pre_rating <- c()
total_points <-c()
average_pre_class_rating<-c()
for (i in seq(2,dim(table)[1],2))
{
n<-unlist(str_extract_all(table[i,2],"[A-Z]{1,} [A-Z]{1,}"))[1]
name <-c(name,n)
state <- c(state,as.character(table[i+1,1]))
pre_rating <-c(pre_rating,unlist(str_extract_all(table[i+1,2], '[0-9]+'))[2])
total_points <-c(total_points,as.numeric(as.character(table[i,3])))
}
newtable<-data.frame(name,state,total_points,pre_rating)
for (i in seq(2,dim(table)[1],2))
{
sum <- 0
count <- 0
for (j in 4:10)
{
competetor <- as.numeric(str_extract_all(table[i,j],"[0-9]+"))
if (! is.na(competetor))
{
sum<-sum+as.numeric(pre_rating[competetor])
count <- count+1
}
}
avg <- sum/count
avg<-as.integer(avg)
average_pre_class_rating<-c(average_pre_class_rating,avg)
}
finaltable <- cbind(newtable,data.frame(average_pre_class_rating))
names(finaltable)<- c("Player's Name","Player's State","Total Number of Points","Player's Pre-Rating","Average Pre Chess Rating of Opponents")
write.csv(finaltable,"output.csv",row.names=FALSE )
f<-read.csv("output.csv",sep = ',')
names(f)<-c("Player's Name","Player's State","Total Number of Points","Player's Pre-Rating","Average Pre Chess Rating of Opponents")
f
## Player's Name Player's State Total Number of Points
## 1 GARY HUA ON 6.0
## 2 DAKSHESH DARURI MI 6.0
## 3 ADITYA BAJAJ MI 6.0
## 4 PATRICK H MI 5.5
## 5 HANSHI ZUO MI 5.5
## 6 HANSEN SONG OH 5.0
## 7 GARY DEE MI 5.0
## 8 EZEKIEL HOUGHTON MI 5.0
## 9 STEFANO LEE ON 5.0
## 10 ANVIT RAO MI 5.0
## 11 CAMERON WILLIAM MI 4.5
## 12 KENNETH J MI 4.5
## 13 TORRANCE HENRY MI 4.5
## 14 BRADLEY SHAW MI 4.5
## 15 ZACHARY JAMES MI 4.5
## 16 MIKE NIKITIN MI 4.0
## 17 RONALD GRZEGORCZYK MI 4.0
## 18 DAVID SUNDEEN MI 4.0
## 19 DIPANKAR ROY MI 4.0
## 20 JASON ZHENG MI 4.0
## 21 DINH DANG ON 4.0
## 22 EUGENE L MI 4.0
## 23 ALAN BUI ON 4.0
## 24 MICHAEL R MI 4.0
## 25 LOREN SCHWIEBERT MI 3.5
## 26 MAX ZHU ON 3.5
## 27 GAURAV GIDWANI MI 3.5
## 28 SOFIA ADINA MI 3.5
## 29 CHIEDOZIE OKORIE MI 3.5
## 30 GEORGE AVERY ON 3.5
## 31 RISHI SHETTY MI 3.5
## 32 JOSHUA PHILIP ON 3.5
## 33 JADE GE MI 3.5
## 34 MICHAEL JEFFERY MI 3.5
## 35 JOSHUA DAVID MI 3.5
## 36 SIDDHARTH JHA MI 3.5
## 37 AMIYATOSH PWNANANDAM MI 3.5
## 38 BRIAN LIU MI 3.0
## 39 JOEL R MI 3.0
## 40 FOREST ZHANG MI 3.0
## 41 KYLE WILLIAM MI 3.0
## 42 JARED GE MI 3.0
## 43 ROBERT GLEN MI 3.0
## 44 JUSTIN D MI 3.0
## 45 DEREK YAN MI 3.0
## 46 JACOB ALEXANDER MI 3.0
## 47 ERIC WRIGHT MI 2.5
## 48 DANIEL KHAIN MI 2.5
## 49 MICHAEL J MI 2.5
## 50 SHIVAM JHA MI 2.5
## 51 TEJAS AYYAGARI MI 2.5
## 52 ETHAN GUO MI 2.5
## 53 JOSE C MI 2.0
## 54 LARRY HODGE MI 2.0
## 55 ALEX KONG MI 2.0
## 56 MARISA RICCI MI 2.0
## 57 MICHAEL LU MI 2.0
## 58 VIRAJ MOHILE MI 2.0
## 59 SEAN M MI 2.0
## 60 JULIA SHEN MI 1.5
## 61 JEZZEL FARKAS ON 1.5
## 62 ASHWIN BALAJI MI 1.0
## 63 THOMAS JOSEPH MI 1.0
## 64 BEN LI MI 1.0
## Player's Pre-Rating Average Pre Chess Rating of Opponents
## 1 1794 1605
## 2 1553 1469
## 3 1384 1563
## 4 1716 1573
## 5 1655 1500
## 6 1686 1518
## 7 1649 1372
## 8 1641 1468
## 9 1411 1523
## 10 1365 1554
## 11 1712 1467
## 12 1663 1506
## 13 1666 1497
## 14 1610 1515
## 15 1220 1483
## 16 1604 1385
## 17 1629 1498
## 18 1600 1480
## 19 1564 1426
## 20 1595 1410
## 21 1563 1470
## 22 1555 1300
## 23 1363 1213
## 24 1229 1357
## 25 1745 1363
## 26 1579 1506
## 27 1552 1221
## 28 1507 1522
## 29 1602 1313
## 30 1522 1144
## 31 1494 1259
## 32 1441 1378
## 33 1449 1276
## 34 1399 1375
## 35 1438 1149
## 36 1355 1388
## 37 980 1384
## 38 1423 1539
## 39 1436 1429
## 40 1348 1390
## 41 1403 1248
## 42 1332 1149
## 43 1283 1106
## 44 1199 1327
## 45 1242 1152
## 46 377 1357
## 47 1362 1392
## 48 1382 1355
## 49 1291 1285
## 50 1056 1296
## 51 1011 1356
## 52 935 1494
## 53 1393 1345
## 54 1270 1206
## 55 1186 1406
## 56 1153 1414
## 57 1092 1363
## 58 917 1391
## 59 853 1319
## 60 967 1330
## 61 955 1327
## 62 1530 1186
## 63 1175 1350
## 64 1163 1263