2021年12月27日に今年の年末ATPランキングが発表されました。このシリーズでは、このランキングデータをRで解析します。
今回は、前処理としてランキングデータを整形する段階を紹介します。
ATP公式サイトからランキングデータを取得
こちらのページに掲載されている全選手のランキングデータをコピー&ペーストし、テキストファイルとして保存します。
この時点のテキストファイルでは、次のように、一選手の情報が4行に渡ってしまっています。
Ranking Move Country Player Age Points Tourn Played Points Dropping Next Best 1 SRB Novak Djokovic 34 11,540 14 0 0 2 RUS Daniil Medvedev 25 8,640 23 0 0 3 GER Alexander Zverev 24 7,840 23 0 0
データの整形
そこで、データの整形をRで行い、1行に1選手の情報が記載されるようにします。
以下のRスクリプトを実行します。
rank <- read.delim("atp_year_end_rank_2021_all.txt", header=TRUE, fill=TRUE) nrow <- nrow(rank) / 4 # make vectors ranking <- rank[(1:nrow)*4-3, 1] move <- rank[(1:nrow)*4-3, 2] country <- rank[(1:nrow)*4-2, 1] player <- rank[(1:nrow)*4-1, 1] age <- as.numeric(rank[(1:nrow)*4, 1]) points <- as.numeric(sub(",", "", rank[(1:nrow)*4, 2])) tourn_played <- rank[(1:nrow)*4, 3] points_dropping <- rank[(1:nrow)*4, 4] next_best <- rank[(1:nrow)*4, 5] # make new data frame after <- data.frame(ranking, move, country, player, age, points, tourn_played, points_dropping, next_best) # write csv file write_csv(after, "atp_year_end_rank_2021_all_after.csv")
実行結果はcsvファイルに書き出されます。ファイルの中身は次の通りです。
ranking,move,country,player,age,points,tourn_played,points_dropping,next_best 1, ,SRB,Novak Djokovic,34,11540,14,0,0 2, ,RUS,Daniil Medvedev,25,8640,23,0,0 3, ,GER,Alexander Zverev,24,7840,23,0,0
実際のcsvファイルはこちらです。
これで準備完了です。さっそくデータ解析していきましょう。