プロ野球ヌルデータ置き場 http://lcom.sakura.ne.jp/NulData/2007/Stats/Standing.htm をスクレイプして, 日本プロ野球の勝敗表を取得します.
library(XML)
library(dplyr)
##
## Attaching package: 'dplyr'
##
## 以下のオブジェクトはマスクされています (from 'package:stats') :
##
## filter, lag
##
## 以下のオブジェクトはマスクされています (from 'package:base') :
##
## intersect, setdiff, setequal, union
library(data.table)
##
## Attaching package: 'data.table'
##
## 以下のオブジェクトはマスクされています (from 'package:dplyr') :
##
## last
library(reshape2)
## 2007年のデータを取得する.
year = 2007
dat = readHTMLTable('http://lcom.sakura.ne.jp/NulData/2007/Stats/Standing.htm')
## 9番目に, チーム別の勝敗クロス表をスクレイプした結果が入っている.
dat_cross = dat[9] %>% as.data.frame
勝敗数を整理したいです. クロス表でもいいのですが, Rなのでデータフレームで操作します.
## 列名を取得する
dat_colname = dat_cross[1,] %>% unlist %>% as.character
dat_colname = c("NA", dat_colname)
## 列名をセットして, 余計な行を消す
dat_cross %>% setnames(dat_colname[1:15])
dat_cross_data = dat_cross[2:7,]
## meltして扱いやすい形にする.
dat_cross_melt =
dat_cross_data %>%
melt(id.vars="NA") %>%
setnames(c("team", "opponent", "win_lose"))
## Warning: attributes are not identical across measure variables; they will
## be dropped
## データを整理, 勝敗数を取得する.
library(stringr)
dat_win_lose =
dat_cross_melt %>%
arrange(team) %>%
mutate(win_lose = gsub("\\(.\\)", "-", win_lose)) %>%
mutate(win = gsub("-.*", "", win_lose)) %>%
mutate(lose = gsub(".*-", "", win_lose)) %>%
mutate(win = as.numeric(win), lose = as.numeric(lose)) %>%
filter(opponent != "合計") %>%
filter(win != "NA") %>%
mutate(year = year)
## できた
dat_win_lose %>% select(-win_lose)
## team opponent win lose year
## 1 ヤクルト 巨人 10 14 2007
## 2 ヤクルト 中日 7 17 2007
## 3 ヤクルト 阪神 8 16 2007
## 4 ヤクルト 横浜 13 11 2007
## 5 ヤクルト 広島 11 13 2007
## 6 ヤクルト 日本ハム 1 3 2007
## 7 ヤクルト ロッテ 2 2 2007
## 8 ヤクルト ソフトバンク 1 3 2007
## 9 ヤクルト 楽天 2 2 2007
## 10 ヤクルト 西武 2 2 2007
## 11 ヤクルト オリックス 3 1 2007
## 12 横浜 巨人 8 16 2007
## 13 横浜 中日 13 11 2007
## 14 横浜 阪神 10 14 2007
## 15 横浜 広島 15 9 2007
## 16 横浜 ヤクルト 11 13 2007
## 17 横浜 日本ハム 2 1 2007
## 18 横浜 ロッテ 2 2 2007
## 19 横浜 ソフトバンク 4 0 2007
## 20 横浜 楽天 1 3 2007
## 21 横浜 西武 3 1 2007
## 22 横浜 オリックス 2 2 2007
## 23 巨人 中日 12 12 2007
## 24 巨人 阪神 9 14 2007
## 25 巨人 横浜 16 8 2007
## 26 巨人 広島 14 10 2007
## 27 巨人 ヤクルト 14 10 2007
## 28 巨人 日本ハム 1 3 2007
## 29 巨人 ロッテ 2 2 2007
## 30 巨人 ソフトバンク 4 0 2007
## 31 巨人 楽天 3 1 2007
## 32 巨人 西武 3 1 2007
## 33 巨人 オリックス 2 2 2007
## 34 広島 巨人 10 14 2007
## 35 広島 中日 9 15 2007
## 36 広島 阪神 14 9 2007
## 37 広島 横浜 9 15 2007
## 38 広島 ヤクルト 13 11 2007
## 39 広島 日本ハム 0 4 2007
## 40 広島 ロッテ 0 4 2007
## 41 広島 ソフトバンク 1 3 2007
## 42 広島 楽天 2 2 2007
## 43 広島 西武 1 3 2007
## 44 広島 オリックス 1 2 2007
## 45 阪神 巨人 14 9 2007
## 46 阪神 中日 12 11 2007
## 47 阪神 横浜 14 10 2007
## 48 阪神 広島 9 14 2007
## 49 阪神 ヤクルト 16 8 2007
## 50 阪神 日本ハム 0 4 2007
## 51 阪神 ロッテ 1 2 2007
## 52 阪神 ソフトバンク 2 2 2007
## 53 阪神 楽天 3 1 2007
## 54 阪神 西武 2 2 2007
## 55 阪神 オリックス 1 3 2007
## 56 中日 巨人 12 12 2007
## 57 中日 阪神 11 12 2007
## 58 中日 横浜 11 13 2007
## 59 中日 広島 15 9 2007
## 60 中日 ヤクルト 17 7 2007
## 61 中日 日本ハム 1 3 2007
## 62 中日 ロッテ 3 1 2007
## 63 中日 ソフトバンク 1 3 2007
## 64 中日 楽天 1 2 2007
## 65 中日 西武 4 0 2007
## 66 中日 オリックス 2 2 2007
出来ましたね. 年度別に集計してまとめれば, 何か楽しいことができそうです.