R関連‎ > ‎

データ準備(sum, count)

集計機能
足し上げは、countsum
回数は、tabulate

countsum(x, group,reorder=TRUE,...)
> rowsum(batting.2008[,c("AB","H","BB","2B")], batting.2008$teamID)
      AB    H  BB X2B
ARI 5409 1355 587 318
ATL 5604 1514 618 316
BAL 5559 1486 533 322
BOS 5596 1565 646 353
CHA 5553 1458 540 296

tabulate
単純に0から最大回数まで分布数を見られる。
> HR.cnts <- tabulate(batting.2008$HR)
> names(HR.cnts) <- 0:(length(HR.cnts)-1)
> HR.cnts
 0  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 
92 63 45 20 15 26 23 21 22 15 15 18 12 10 12  4  9  3  3 13  9  7 10  4  8  2 
26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 
 5  2  4  0  1  6  6  3  1  2  4  1  0  0  0  0  0  0  0  0  0  1 

47本もHRを売ったやつがひとりいると思ったけど、tabulateは 0 をカウントしない。
なので、これは間違い。1ずれてる。

単純にtableを使うのがよさげ。 
table(batting.2008$HR)
  0   1   2   3   4   5   6   7   8   9  10  11  12  13  14  15  16  17  18  19 
867  92  63  45  20  15  26  23  21  22  15  15  18  12  10  12   4   9   3   3 
 20  21  22  23  24  25  26  27  28  29  31  32  33  34  35  36  37  38  48 
 13   9   7  10   4   8   2   5   2   4   1   6   6   3   1   2   4   1   1 

xtabsを使うとフォーミュラ型も使える。
 xtabs(~bats+lgID,batting.2008)
    lgID
bats  AL  NL
   B  51  67
   L 186 215
   R 404 461

tableはファクターにしか使えないので、数字を扱う場合にはcutする。



Joseph Adler¥ 4,423 (2% OFF)
Databases:37位 (2010.09.04)
Comments