# tabul

行列またはベクトルの値の頻度

## 呼び出し手順

    [m]=tabul(X [,order])

## パラメータ

X

  ベクトルまたは行列 (実数または複素数または文字列)

order

  (オプションの) 文字 "d" または "i" (デフォルト値: "d")を指定します

m

  列行列 (`X` は数値ベクトルまたは行列) またはメンバー2つを有するリスト (`X` が文字列ベクトルまたは行列).

## 説明

この関数は,数値または文字列のベクトルまたは行列`X`の 値の頻度を計算します :

X が数値のベクトルまたは行列の場合

  `m` は2列の行列で, 最初の列には`X`の異なる値, 他の列にはこれらの値の頻度が含まれます (m(i,2)はm(i,1)の出現頻度です).

X が文字列のベクトルまたは行列の場合

  `m` はリストで, その最初のメンバーは `X`の異なる値から構成される 文字列(列)ベクトル, 2番目のメンバーは その要素がこれらの値の頻度となる(列)ベクトルです (m(i)(2)は文字列m(i)(1)の出現頻度です).

オプションのパラメータ`order` は, "d" または "i" とする 必要があり (デフォルトは order="d"), Xの異なる値がソートされる順序(降順(d)または昇順(i))を指定します.

## 例

    // 最初の例
    X = [2 8 0 3 7 6 8 7 9 1 6 7 7 2 5 2 2 2 9 7]
    m1 = tabul(X)
    m2 = tabul(X, "i")

    // 二番目の例
    X = ["ba" "baba" "a" "A" "AA" "a" "aa" "aa" "aa" "A" "ba"]
    m = tabul(X,"i")

    // 3番目の例
    n = 50000;
    X = grand(n,1,"bin",70,0.5);
    m = tabul(X,"i");
    clf()
    plot2d3(m(:,1), m(:,2)/n)
    xtitle("empirical probabilities of B(70,0.5)")

    // 最後の例 : scilabライセンスにおける単語の頻度を計算
    text = read(SCI+"/license.txt",-1,1,"(A)"); // scilabライセンスを読む
    bigstr = strcat(text," ");                  // 全ての行を一つの大きな文字列にする
    sep =  [" " "," "." ";" "*" ":" "-" """"];  // 単語セパレータ
    words = tokens(bigstr, sep);                // 大きな文字列を単語に分割
    m = tabul(words);                           // 各単語の出現頻度を計算
    [occ , p] = gsort(m(2));                     // 降順に頻度をソート
    results = [m(1)(p) string(occ)]             // 結果を表示

## 参照

- dsearch
- histplot

## 参考文献

Wonacott, T.H. & Wonacott, R.J.; Introductory Statistics, fifth edition, J.Wiley & Sons, 1990.