2015年11月8日日曜日

【R言語】dplyr,tidyr関数で「ディープインパクト」全産駒の内訳を集計したくなったの

 先日は、R言語の「table関数」を使って「ディープインパクト」全産駒の内訳を集計しました。ただ、アウトプットのデータ形式がtableのため、降順がしづらいのがちょっとストレスでした。

【R言語】どうしても「ディープインパクト」全産駒の内訳を集計したくなったの<調教師別クロス集計>。

http://sapporomkt.blogspot.jp/2015/11/r.html

 今回は、dplyr関数とtidyr関数を使ってデータフレーム形式上で集計と降順並び替えを試してみます。

 ちなみに、今回の作業課題は「生産牧場と産駒を預かる調教師の関係を検証してみよう!」です。
 


ソースコード


# 両パッケージをインスール。
install.packages("tidyr")
install.packages("dplyr")

# 両パッケージをロード。
library(tidyr)
library(dplyr)

# 「生産牧場」別に「調教師」の数をカウント。
df1 <- count(deep_1.dat,生産牧場,調教師)

# 縦形式のデータで見づらいので、横形式に展開。
df2 <- spread(df1, 調教師, n)

# カラム数をチェック。1列目が「生産牧場名」なので、2~146列目が集計対象(「調教師列」)であることがわかります。
ncol(df2)

# データフレームに列を追加する「transform関数」で集計対象列の合計値を格納。
# NAが混入しているデータなので「na.rm=TRUE」を忘れずに。
df3 <- transform(apply(df2[c(2:146)], 1, sum,na.rm=TRUE))

# 行数が同じデータなので、「cbind関数」で縦統合。
df4 <- cbind(df2,df3)

# 合計値で降順にソート。「decreasing=T」無しだと昇順になります。
df5 <- df4[order(df4$X_data, decreasing=T), ]

# グラフ加工のために、いったん、CSVで書き出し。
# 全部の生産牧場を載せても見づらいだけなので、トップ5で抽出。
write.csv(head(df5,n=5),"firm_top5.csv",sep=",")


集計結果


 まだ「ggplot2」とかちゃんと使いこなせないので、EXCELで作っちゃいました(テヘ)。
繰り返しますが、「全種牡馬」ではなくて、「ディープインパクト産駒のみ」のデータなのでお忘れなく。


 「生産牧場」同様、全ての「調教師」を載せるのは難しかったため、預かり頭数上位10人だけで抽出しました。こうやってまとめると「池江調教師」は「ノーザンファーム」が多いことがわかりますね。
藤原調教師」は「ノーザンファーム」と「社台ファーム」がほぼ同じ頭数となっています。

 特徴的なのは、一番右の列の「友道調教師」が「ノーザンファーム」から9頭となっていること。
こちら、「牝馬限定GIレース」の「ヴィクトリアマイル」を連覇した「ヴィルシーナ」の調教師さんとしても有名ですね。

 こういった特定の生産牧場が特定の調教師に集中する背景としては、「クラブ馬」の存在があるかと思われます。数万円ずつお金を出しあって競走馬を所有する「一口馬主」と言われる制度ですね。「ノーザンファーム」のような実績のある共同馬主クラブは、当然、よりシビアに「結果」を求められるので、その分、「実績のある調教師」に依頼が偏るのかなと。
(僕の見立てが間違っていましたら、どなたかご指導くださいm(_ _)m)


 <参考ページ>

 【R言語】どうしても「ディープインパクト」全産駒の内訳を集計したくなったの<前処理編>。
http://sapporomkt.blogspot.jp/2015/10/r.html 

AEIが優秀な種牡馬を調べてみたら・・・やっぱりディープ(略)
http://sapporomkt.blogspot.jp/2015/10/aei.html

過去5年間のリーディングサイアー成績を眺めてみた~ディープインパクトって実際・・・
http://sapporomkt.blogspot.jp/2015/10/5.html

(R言語)readHTMLTable関数でJ2の順位を音速で抜き出す。
http://sapporomkt.blogspot.jp/2015/07/rreadhtmltablej2.html

無料のスクレイピングサービス「import.io」が脅威の進化!(いつのまにか)
http://sapporomkt.blogspot.jp/2015/08/importio.html

【R言語】data.frameの列名変更は全部上書きで。
http://sapporomkt.blogspot.jp/2015/09/rdataframe.html

【R言語】競馬データで「rbind関数」の使い方を覚えよう!
http://sapporomkt.blogspot.jp/2015/09/rrbind.html

0 件のコメント:

コメントを投稿