カテゴリごとの進行状況を調べるためのスクリプト

僕が作った単語帳は、単語をグループに分けて登録することができます。Rの処理としては因子型になっているので、tapply関数を使うと集計が色々できて面白いです、という例。

> tapply(tango$num_of_right,tango$group,summary)
$toefl.listening.advanced
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  0.000   0.000   1.000   1.527   2.000   6.000 

$toefl.reading.advanced
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   0.00    0.00    0.00    0.17    0.00    2.00 

> tapply(tango$complete,tango$group,summary)
$toefl.listening.advanced
   Mode   FALSE    TRUE 
logical     125      25 

$toefl.reading.advanced
   Mode   FALSE    TRUE 
logical     185      15 

ちなみに「これのがめんどうだな」と感じた正常な感性をお持ちのあなたなら、たぶんこうしているんじゃないかなと思います。

> apply(tango[c("num_of_right","complete")],2,function(x){tapply(x,tango$group,summary)})
$num_of_right
$num_of_right$toefl.listening.advanced
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  0.000   0.000   1.000   1.527   2.000   6.000 

$num_of_right$toefl.reading.advanced
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   0.00    0.00    0.00    0.17    0.00    2.00 


$complete
$complete$toefl.listening.advanced
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
 0.0000  0.0000  0.0000  0.1667  0.0000  1.0000 

$complete$toefl.reading.advanced
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  0.000   0.000   0.000   0.075   0.000   1.000 

tango$groupと書くのすら面倒&でもattachはしたくないという人のためにwithを使ってみたけど、これはやりすぎな感がするかな。。。

withはattachの局所版、みたいな感じだよ。withが終わるまでは$なしでアクセスできるようになって、withが終わるとアクセスできなくなる。

> with(tango,{apply(cbind(num_of_right,complete),2,function(x){tapply(x,group,summary)})})
$num_of_right
$num_of_right$toefl.listening.advanced
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  0.000   0.000   1.000   1.527   2.000   6.000 

$num_of_right$toefl.reading.advanced
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   0.00    0.00    0.00    0.17    0.00    2.00 


$complete
$complete$toefl.listening.advanced
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
 0.0000  0.0000  0.0000  0.1667  0.0000  1.0000 

$complete$toefl.reading.advanced
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
  0.000   0.000   0.000   0.075   0.000   1.000 

やっぱapplyファミリーいいねー。applyファミリーについては以前この辺でまとめたりした。