連続5試合のチームヒット数合計の計算をnysolで頑張る.
移動窓を利用した集計: mmvstatsを使います. コマンド名が覚えられルキがしません.
使い方:
今回は,
とすれば,
s=日付ごとにソート
k=チームごとに
f=ヒット数を
t=5試合ずつ
c=sumを取る
ことになります. 詳細はこちら.
やってみました.
## five-game-streak gross hit
cat ./all2013.csv |
mcal c='if(${H_FL}>0, 1,0)' a="HIT_FL" |
mcal c='midw($s{GAME_ID},0,3)' a="HOME_TEAM" |
mcut f=GAME_ID,HOME_TEAM,AWAY_TEAM_ID:AWAY_TEAM,BAT_HOME_ID,HIT_FL |
msum k=GAME_ID,HOME_TEAM,AWAY_TEAM,BAT_HOME_ID f=HIT_FL |
mcal c='if(${BAT_HOME_ID}==1,$s{HOME_TEAM}, $s{AWAY_TEAM})' a="TEAM" |
mcal c='midw($s{GAME_ID}, 3,9)' a="DATE" |
mcut f=DATE,TEAM,HIT_FL:HIT |
mmvstats s=DATE%n k=TEAM f=HIT t=5 c=sum | ## ここ
msortf f=HIT%nr > five_streak.csv
中身を見ます.
dat = data.table::fread("five_streak.csv")
head(dat)
## DATE TEAM HIT%0nr
## 1: 201309220 COL 74
## 2: 201306070 SLN 73
## 3: 201309080 BOS 73
## 4: 201309240 COL 73
## 5: 201305030 CLE 72
## 6: 201307050 LAN 71
ちゃんと出来ていますね.
RcppRollとかよりも簡単っぽい? でも関数が限られるからなあ.