はじめに
R言語、RStudioを使って自分のゴルフスコアを分析してみます。
まずは、RStuidoにスコアデータを取り込んでデータ分析を開始できるところまでを準備編とします。
環境
・Mac mini M2 Pro
・macOS Sequoia 15.3.2
・RStudio 2024.12.1 Build 563
データ分析の目的
ゴルフを初めて4年程たちますがなかなか上手くなりません。現状を分析しどうすれば上手くなるかの指針を得るために、これまでに記録したデータを多方面から分析していきます。
スコアは当初からGDOスコアアプリを使って記録していますので、それを取り込みます。
対象データ
対象日:2021年7月から2025年4月まで
ホールデータ:1710ホール
ラウンドデータ:95ラウンド
データ準備
データのCSV化
GDOスコアアプリがデータをCSVで出力してくれれば一番いいのですが、そのような機能はありません。そこで、Web版で以下のように表示されるデータを無理やりコピー&ペーストでMacのNumbersに取り込むことにしました。
これが一番の面倒な作業でしたが、慣れてくると手際良く進められます。Numbersではこのような表示になります。これをCSVファイルに書き出します。
RStudioへの読み込み
次にこのCSVファイルをR Studioに取り込みます。
#read csv file as dataframe
JoDataCsv <- read.csv("JoHoleData.csv")
このデータフレームに計算で求められるResult列を追加したデータフレームを作成します。これがホールデータの基本になります。
# 11列にResult列(ParとかBoggyを数字で表現)を挿入 最大15列を想定
JoData <- cbind(JoDataCsv[,seq(1,10)], Result=(JoDataCsv$Score-JoDataCsv$Par), JoDataCsv[,seq(11,15)] )
RStudioの画面ではこのようになります。
次にこのホールデータからラウンドデータを作成します。
# ラウンド毎のサマリの表を作る
library(tidyverse)
JoRoundData <- JoData %>% group_by(RoundID,Date,CourseName) %>% summarise( Par=sum(Par),Score=sum(Score),Putt=sum(Putt) )
このラウンドデータはRStudioでは以下のように表示されます。
これで分析のベースとなるデータフレームが作成できました。準備完了です。
最初の分析
おまけで最初の分析を行います。
【仮説】毎年上手くなっている
全てのラウンドスコアを年毎に箱ひげ図にしてみました。ソースコードはこちら
#年ごとのScoreをまとめる
JoRoundData2021 <- subset(JoRoundData, subset = grepl("2021",Date) )
JoRoundData2022 <- subset(JoRoundData, subset = grepl("2022",Date) )
JoRoundData2023 <- subset(JoRoundData, subset = grepl("2023",Date) )
JoRoundData2024 <- subset(JoRoundData, subset = grepl("2024",Date) )
JoRoundData2025 <- subset(JoRoundData, subset = grepl("2025",Date) )
list = list( Year2021=JoRoundData2021$Score, Year2022=JoRoundData2022$Score,
Year2023=JoRoundData2023$Score, Year2024=JoRoundData2024$Score,
Year2025=JoRoundData2025$Score)
#箱ひげ図を作成
boxplot(list , col="Yellow",outline=T)
結果は以下の通りで、まずは仮説は立証されました。
まとめ
GDOスコアアプリのデータをRStudioに取り込んでデータ分析する準備ができました。RStudioでは様々なデータ分析・可視化が簡単にできますので、色々な仮説をデータで実証していきたいと思います。