【MLB】これから野球データ分析を始めたいあなたへ
お久しぶりです。パソコンを修理に出すなどしていて随分投稿間隔が空いてしまいました。パソコンを修理に出したということは初期化されて帰ってくるわけですが、当然そうなるとデータ分析環境なども作り直さなければなりません。ちょうどいいので、R言語とデータベースを使った分析を始めるための環境構築的なことを書いていきたいと思います。自己流なので詳しい人から見たらちょっと変なこと書いてるかもだけど許してね。
今回の記事ではこちらの記事のさらに前段階を扱います。R(とデータベース)の導入がお済みの方はこちらをどうぞ。
今回やることは主に3つ。Rのインストールと初期設定、Rのコードを書くにあたり不可欠とも言えるエディタであるRStudioのインストールと初期設定、そしてデータベースの導入です。
R本体などのインストール
Windowsの方は以下のリンク先を見てください。とりあえずこれ読んでおけば何とかなります。実際僕はこれでなんとかしています。サボりとかじゃなくて本当に。Macの方は…僕はわからないのでご自分で調べてください。。
http://yukiyanai.github.io/jp/resources/docs/install-R_windows.pdf
RStudioの設定の中に「Use native pipe operator」という上の資料にはないチェックボックスがあります。これについてはデフォルトでオンになっているはずです。僕は以前書いたコードの都合によりオフにしていますが、これから始めるという人はそのままにしておきましょう。
なお、僕はPane Layoutをこのようにしています。
DBMSのインストール
DBMSとは、データベース管理システムのこと。Oracle DatabaseやMySQL、PostgreSQL、SQLiteなどがあります。Oracleといえばジャイアンツのホームはオラクルパークですよね。おすすめはMySQLです。何と言っても簡単ですからね。その辺のサービスの差には詳しくないし、調べるのが面倒なので僕はMySQL以外を使ったことはないです。MySQLの導入については以下のウェブサイトが詳しいです。
なお、my.iniの記述は飛ばしてもいいと思います。わからないし。動作確認は後でしましょう。
必要なRパッケージのインストール
Rにはパッケージと呼ばれる拡張機能のようなものがあり、そのうちのいくつかは必須レベルになっています。少なくとも、最初からあるパッケージだけではできることはかなり少ないと思います。野球データの分析をするときに最低限これがあるといいよ、というものを書いていきます。
本当に大事なことですが、大文字小文字は絶対に間違えないようにしましょう。
tidyverse
install.packages("tidyverse")
Rのパッケージで最初に入れるべきはこれと次に紹介するdevtoolsです。一般にtidyverseという場合はtidyverseパッケージによって呼び出されるパッケージ群を指します。この中にはデータ絞り込み関数であるfilterや列を追加するmutateなどデータ操作系の関数がたくさんあるdplyrや描画パッケージのggplot2、繰り返し処理の関数を多く有するpurrrなど、こいつらなしではRが使えないんじゃないかレベル、そしてこれさえあれば幅広い処理ができるというパッケージが揃っており、僕はMLBで10勝40敗スタートのチームを本気でワールドシリーズ制覇予想の本命に据えるレベルの逆張りでなければ導入した方がいいと思っています。
ちなみに、僕の書いた記事に登場するRのコードは基本的にtidyverseの存在を前提としています。tidyverseなしのRで快適な分析ライフを送れる人ならこの記事を読んでいないはずですし。
devtools
install.packages("devtools")
基本的には、Githubからパッケージのインストールができるようになるやつ、くらいに思っていただければ大丈夫です。ほかの機能は僕も知らないんですが、必要になったら知ることになるでしょう。
RのパッケージはCRAN(The Comprehensive R Archive Network)にあるものも多いのですが、そうではない、Githubにあるものもかなりの数あるため重要なパッケージになってきます。
RMySQL(もしくはお使いのDBMSに関するパッケージ)
install.packages("RMySQL")
データベースと接続するためのやつです。詳しい使い方は最初に紹介した記事に書いてあります。この記事の最後にもリンクを置いておくので適宜ご利用ください。
baseballr(追記:2023/12/10(追記:2024/1/22))
install.packages("baseballr")
#2023-12-10追記
#上のコードはもう使えないので以下のコードでお願いします
#2024-1-22追記
#復旧したみたいなので普通に上のコードで大丈夫です
#devtools::install_github("BillPetti/baseballr")
ビル・ペッティらが作った野球データに関するパッケージです。Statcastデータの取得などで特にお世話になることが多いです。
mlbr
install.packages(c("highcharter","pbapply"))
devtools::install_github("pontsuyu/mlbr")
日本人のTsuyuponさんという方が作られたパッケージです。上でよくわからないパッケージたちをインストールしているのは、僕の環境では先にこいつらを入れておかないとエラーが出てインストールできないからです。どこを見たらいいのかわからないようなエラーメッセージを見たくないという方はどうかこの通りにやってください。
(オマケ)ggrepel・extrafont
install.packages(c("extrafont","ggrepel"))
ggplot2で図を描くときに役に立つパッケージたちです。extrafontは図表内でいろいろなフォントを使えるようにしてくれるやつ、ggrepelは図表内のラベルを被らないようにいい感じにしてくれるやつです。
library(extrafont)
font_import()
loadfonts(device="win") #Windowsじゃない人は適宜変更
1行目はパッケージを読み込む関数です。下2行はextrafontを使うためにインストール後最初に読み込む時にしなければならない準備作業です。2回目以降はしなくていいのでご安心ください。
これで下準備は整いました。あとはRとDBの動作を確認するだけです。
動作確認をしてみよう
MySQLをコマンドプロンプトから起動する
mysql -u root -p
コマンドプロンプトを起動して上のコマンドを入力すると、パスワード入力をする欄が出てきますので、入力しましょう。そうすると以下のような画面が表示されるはずです。
データベースを作る①~サンプル~
CREATE DATABASE sampledb; #セミコロン;を忘れずに!
実際に使用するデータベースを作る前に、上のコードを先ほど起動したコマンドプロンプトのところに打ち込んで試しにデータベースを作ります。これすら無事にできない人は何かがおかしいので、半角セミコロンを問題なく入力できているか確認したうえで、もし違ったらインストールからやり直したほうがいいと思います。
次にRStudioを起動しましょう。まずは必要なパッケージを読み込んだ後、Rからデータベースに接続するため、コンソールに以下のコードを入力してください。
#MySQL以外のDBを使っている方はそれに合わせた内容に変更
library(RMySQL) #パッケージの読み込み
conn <- dbConnect(MySQL(),dbname="sampledb", user="root",password="password") #パスワードはご自身の設定したものに書き換える
次に、データを書き込んでみましょう。1,2行目でローカルデータの書き込みを可能にして、3行目でRに組み込まれているサンプルデータのirisを先ほど作成したサンプルデータベースに書き込んでいます。
dbSendQuery(conn,"set global local_infile=0;")
dbSendQuery(conn,"set global local_infile=1;")
dbWriteTable(conn,name="iris",value = iris,append=TRUE,row.names=FALSE)
[1] TRUE
3行目を実行してこれが表示されたら成功です。一応ちゃんとデータが入っているかをもう一度確認するためにもう一度コマンドプロンプトを開いてみましょう。
USE sampledb;
SHOW tables;
順番に実行して2行目の後の結果が以下のような感じになれば成功です。
ついでに中身も見てみましょう。
SELECT * FROM iris;
縦が150行のそれっぽい表が出てきたら成功です。これでサンプルDBを用いた動作確認は完了ですね。
データベースを作る②~実際に使うやつ~
まず、先ほどと同様にデータベースを作成してください。名前は英字であればなんでもいいと思います。逆に言えば日本語の文字(ひらがな、カタカナ、全角英数字)や変な記号は避けるべきということです。野球と関係あるものにしておくとなお良し、かもしれません。
conn <- dbConnect(MySQL(),dbname="bbdata",user="root",password="password")
データベースを作る作業が出来たら、今回も同様にRからデータベースに接続します。ここまでで問題なく動作していれば、ここも問題なく動作するはずです。
わからないことを質問できる場所の紹介
わからないことがあったら、誰かに質問したいですよね。自分で調べるのも大事ですが、特に初心者は調べるための手がかりすら持っていないということも多いです。僕もそうでした。
僕に聞いてくれたら答えられる分は答えるので聞いてくれたらいいのですが、より熟練者の方が答えてくれる場所があるならそちらもぜひ使いたい。というわけで、Slackコミュニティ「r-wakalang」の紹介です。
beginnersチャンネルですらけっこう難しいことを書いている人がいて尻込みしてしまうかもしれませんが大丈夫。どんな内容でも落ち着いて深呼吸をしてから質問をしたら、けっこうな確率で優しい人たちが答えてくれます。誰でも質問できますし誰でも答えられるので、スキルアップしていつかは答える側に回りましょう。まずあなたからどうぞって言われたら何も言えないですが。
注意事項としては、何かしらのエラーに関して質問をする場合は、問題のコードとエラーメッセージを貼ることは忘れないようにした方がいいというくらいでしょうか。詳しくは上のQiitaの記事から見てもらえたらと思います。
おわりに
これで準備はだいたい完了です。気が向いたら、次のステップの記事もありますのでそちらもご覧ください。
スキとフォロー、twitterのフォローもしてくれたら喜びます。それではまた次の記事でお会いしましょう。