恒星間ボトルメール

Interstellar Message in a Bottle

2021年末ATPランキング解析【①前処理】

2021年12月27日に今年の年末ATPランキングが発表されました。このシリーズでは、このランキングデータをRで解析します。

今回は、前処理としてランキングデータを整形する段階を紹介します。

ATP公式サイトからランキングデータを取得

www.atptour.com

こちらのページに掲載されている全選手のランキングデータをコピー&ペーストし、テキストファイルとして保存します。

この時点のテキストファイルでは、次のように、一選手の情報が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ファイルはこちらです。

drive.google.com

これで準備完了です。さっそくデータ解析していきましょう。