#splitting each line into seperate list for easier usename_point <- clean_data[seq(1, length(clean_data), 2)]state_rating <- clean_data[seq(2, length(clean_data), 2)]
rating_lookup <- opponents_id %>%rename(opp_rating = rating)performance_df <- opponents_faced %>%unnest(opponent_id) %>%mutate(opponent_id =as.numeric(opponent_id)) %>%# Join to get the rating of each opponentleft_join(rating_lookup, by =c("opponent_id"="id")) %>%# Calculate elo using the elo function made earlierrowwise() %>%mutate(expected =calc_expected(previous_rating[player_id == player_id][1], opp_rating)) %>%group_by(player_id) %>%summarise(Player_Name = name[unique(player_id)],Actual_Score = actual_scores[unique(player_id)],Expected_Score =round(sum(expected, na.rm =TRUE), 2),Difference =round(Actual_Score - Expected_Score, 2) )overperformers <- performance_df %>%arrange(desc(Difference)) %>%head(5)underperformers <- performance_df %>%arrange(Difference) %>%head(5)