ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

カテゴリ レベルの追加と削除

この例では、カテゴリカル配列でレベルの追加と削除を行う方法を示します。

標本データを読み込みます。

load('examgrades')

配列 grades には、120 名の生徒の標本で 5 回のテストにおける得点 (0 ~ 100 点) が格納されています。

順序配列を作成します。

以下のカテゴリを使用して、各生徒に対しそれぞれの試験の成績を英字表記で割り当てます。

成績範囲英字の成績区分
100A+
90–99A
80–89B
70–79C
60–69D

letter = ordinal(grades,{'D','C','B','A','A+'},[],...
                 [60,70,80,90,100,100]);
getlevels(letter)
ans = 

     D      C      B      A      A+ 

成績のカテゴリは 5 つあり、DCBAA+ の順に指定されています。

未定義のカテゴリがないことを確認します。

5 つのどのカテゴリにも該当していない得点があるかどうか確認します。

any(isundefined(letter))
ans =

     1     0     1     1     0

生徒ごとに 5 回分のテストの得点が存在します。前のコマンドは 5 回のテストのそれぞれに対する論理値を返します。この論理値は <undefined> の得点の有無を表します。ここでは 1 番目、3 番目、4 番目のテストの得点が <undefined> (カテゴリ レベルなし) になっています。

未定義のカテゴリの要素を特定します。

isundefined 論理条件を使用すると、英字の成績区分が割り当てられていないテストの得点を特定できます。

grades(isundefined(letter))
ans =

    55
    59
    58
    59
    54
    57
    56
    59
    59
    50
    59
    52

50 点台の得点に英字の成績区分が割り当てられていません。

新しいカテゴリを追加します。

<undefined> になっているすべての得点を、D- というラベルが付いた新しいカテゴリに分類します。

letter(isundefined(letter)) = 'D-';
getlevels(letter)
Warning: Categorical level 'D-' being added. 
> In categorical.subsasgn at 55

ans = 

     D      C      B      A      A+      D- 

順序変数 letter の末尾に新しいカテゴリが追加されます。

カテゴリ レベルを並べ替えます。

カテゴリを並べ替えて、順序を D-D の順にします。

letter = reorderlevels(letter,{'D-','D','C','B','A','A+'});
getlevels(letter)
ans = 

     D-      D      C      B      A      A+ 

要素を比較します。

これですべての得点に英字の成績区分が割り当てられました。次に、最初のテストより 2 番目の方が成績区分が高くなっている生徒の人数を数えます。

sum(letter(:,2) > letter(:,1))
ans =

    32

最初の 2 回のテストの間に、32 人の生徒の成績区分が高くなっています。

カテゴリを調査します。

5 回のそれぞれのテストで A+ を獲得した生徒の人数を数えます。

sum(letter=='A+')
ans =

     0     0     0     0     0

5 回のどのテストにも A+ の生徒はいません。

カテゴリを削除します。

順序変数 letter からカテゴリ A+ を削除します。

letter = droplevels(letter,'A+');
getlevels(letter)
ans = 

     D-      D      C      B      A 

順序変数 letter からカテゴリ A+ がなくなりました。

参考

| | |

関連する例

詳細

この情報は役に立ちましたか?