library(tidyverse)
raw_text <- "
1 | GARY HUA | ON | 6.0 | R: 1794 ->1817 | 39 21 18 14 7 12 4
2 | DAKSHESH DARURI | MI | 6.0 | R: 1553 ->1663 | 63 58 4 17 16 20 7
3 | ADITYA BAJAJ | MI | 6.0 | R: 1384 ->1640 | 8 61 25 21 11 13 12
4 | PATRICK H SCHILLING | MI | 5.5 | R: 1716 ->1744 | 23 28 2 26 5 19 1
5 | HANSHI ZUO | MI | 5.5 | R: 1655 ->1690 | 45 37 12 13 4 14 17
"
chess_df <- raw_text %>%
str_split("\n") %>%
unlist() %>%
str_trim() %>%
.[. != ""] %>%
tibble(line = .) %>%
separate(
line,
into = c("pair", "player_name", "state", "points", "rating", "opponents"),
sep = "\\|",
fill = "right"
) %>%
mutate(
player_name = str_trim(player_name),
state = str_trim(state),
points = as.numeric(str_trim(points)),
pre_rating = as.numeric(str_extract(rating, "\\d{3,4}"))
) %>%
select(player_name, state, points, pre_rating, opponents)
avg_opponent_rating <- chess_df$pre_rating
chess_df <- chess_df %>%
mutate(
avg_opp_rating = mean(avg_opponent_rating, na.rm = TRUE)
)
final_df <- chess_df %>%
select(
Player = player_name,
State = state,
Total_Points = points,
Pre_Rating = pre_rating,
Avg_Opponent_Rating = avg_opp_rating
)
final_df
## # A tibble: 5 × 5
## Player State Total_Points Pre_Rating Avg_Opponent_Rating
## <chr> <chr> <dbl> <dbl> <dbl>
## 1 GARY HUA ON 6 1794 1620.
## 2 DAKSHESH DARURI MI 6 1553 1620.
## 3 ADITYA BAJAJ MI 6 1384 1620.
## 4 PATRICK H SCHILLING MI 5.5 1716 1620.
## 5 HANSHI ZUO MI 5.5 1655 1620.
write.csv(final_df, "chess_tournament_results.csv", row.names = FALSE)