メインコンテンツ

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

reordercats

categorical 配列内のカテゴリを並べ替える

説明

B = reordercats(A) は、categorical 配列内のカテゴリを並べ替えます。既定では、reordercats は英数字順を使用します。

カテゴリの順序は、関数 summaryhistogram などで使用されます。categorical 配列が順序配列である場合、カテゴリの順序はそれらの数学的な順序を定義します。最初に指定されるカテゴリは最小で、最後に指定されるカテゴリは最大になります。

B = reordercats(A,neworder) は、neworder で指定された順序でカテゴリを並べ替えます。

すべて折りたたむ

categorical 配列を作成すると、カテゴリは常に特定の順序で並べられます。ただし、後でカテゴリを追加すると、新しいカテゴリ セットの順序が正しくなくなる可能性があります。カテゴリを英数字順に並べるには、reordercats 関数を使用します。

たとえば、2 つの categorical 配列を連結します。次に、その結果できたカテゴリを並べ替えます。

まず、配列を作成します。

X = categorical(["Frog" "Cat" "Cat" "Ant" "Frog"])
X = 1×5 categorical
     Frog      Cat      Cat      Ant      Frog 

Y = categorical(["Deer" "Bear" "Eagle" "Deer"])
Y = 1×4 categorical
     Deer      Bear      Eagle      Deer 

各配列のカテゴリは英数字順に並んでいます。

Xcats = categories(X)
Xcats = 3×1 cell
    {'Ant' }
    {'Cat' }
    {'Frog'}

Ycats = categories(Y)
Ycats = 3×1 cell
    {'Bear' }
    {'Deer' }
    {'Eagle'}

次に、XY を 1 つの categorical 配列に連結します。

A = [X Y]
A = 1×9 categorical
     Frog      Cat      Cat      Ant      Frog      Deer      Bear      Eagle      Deer 

カテゴリを一覧表示します。結合されたカテゴリ セットは英数字順になっていません。連結では、1 つのカテゴリ セットがもう 1 つのカテゴリ セットの末尾に追加されるだけです。

Acats = categories(A)
Acats = 6×1 cell
    {'Ant'  }
    {'Cat'  }
    {'Frog' }
    {'Bear' }
    {'Deer' }
    {'Eagle'}

カテゴリを並べ替えます。出力 categorical 配列には、入力配列と同じ要素が含まれます。

B = reordercats(A)
B = 1×9 categorical
     Frog      Cat      Cat      Ant      Frog      Deer      Bear      Eagle      Deer 

カテゴリを一覧表示します。今回は、結合されたカテゴリ セットが英数字順になります。

Bcats = categories(B)
Bcats = 6×1 cell
    {'Ant'  }
    {'Bear' }
    {'Cat'  }
    {'Deer' }
    {'Eagle'}
    {'Frog' }

categorical 配列を作成します。

A = categorical(["red" "green" "blue" "red" "green" "red" "blue" "blue"])
A = 1×8 categorical
     red      green      blue      red      green      red      blue      blue 

そのカテゴリを表示します。英数字順に並んでいます。

categories(A)
ans = 3×1 cell
    {'blue' }
    {'green'}
    {'red'  }

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

B = reordercats(A,["red" "green" "blue"])
B = 1×8 categorical
     red      green      blue      red      green      red      blue      blue 

そのカテゴリを表示します。色スペクトルで一般的に使用される RGB 順になります。

categories(B)
ans = 3×1 cell
    {'red'  }
    {'green'}
    {'blue' }

この配列は順序 categorical 配列ではないため、カテゴリの順序には数学的な意味はありません。したがって、カテゴリは色スペクトルの順序で表示されますが、> (より大きい) や< (より小さい) などの関係演算は意味をもちません。

交通手段を含む順序 categorical 配列を作成します。各交通手段の平均旅行費用に基づいてカテゴリを並べ替えます。

A = categorical(["plane" "car" "train" "car" "plane" "car"], ...
                ["car" "train" "plane"], ...
                Ordinal=true)
A = 1×6 categorical
     plane      car      train      car      plane      car 

そのカテゴリを表示します。配列 A は順序配列なので、car < train < plane になります。

categories(A)
ans = 3×1 cell
    {'car'  }
    {'train'}
    {'plane'}

たとえば、カテゴリが plane または train である要素は、カテゴリ car よりも大きくなります。

A(A > "car")
ans = 1×3 categorical
     plane      train      plane 

電車旅行の費用の低下を反映するようにカテゴリを並べ替えます。

B = reordercats(A,["train" "car" "plane"])
B = 1×6 categorical
     plane      car      train      car      plane      car 

そのカテゴリを表示します。カテゴリの数学的な順序は train < car < plane になります。

categories(B)
ans = 3×1 cell
    {'train'}
    {'car'  }
    {'plane'}

たとえば、traincar より大きくなくなりました。関係演算 minmax の結果には、新しいカテゴリ順序が反映されます。

B(B > "car")
ans = 1×2 categorical
     plane      plane 

交通手段を含む categorical 配列を作成します。

A = categorical(["plane" "car" "train" "car" "car" "plane" "car"])
A = 1×7 categorical
     plane      car      train      car      car      plane      car 

そのカテゴリを表示します。

categories(A)
ans = 3×1 cell
    {'car'  }
    {'plane'}
    {'train'}

countcats 関数を使用して、配列内で各カテゴリが出現する回数をカウントします。

B = countcats(A)
B = 1×3

     4     2     1

出現回数が最も少ないカテゴリから出現回数が最も多いカテゴリに並べる順序を作成します。その順序を数値ベクトルとして指定するには、sort 関数の 2 番目の出力を使用します。出力 neworder は、categorical 配列の要素ではなくカテゴリを並べ替える方法を説明します。

[C,neworder] = sort(B);
neworder
neworder = 1×3

     3     2     1

配列での出現回数が最も少ないものから最も多いものの順にカテゴリを並べ替えます。

D = reordercats(A,neworder);
categories(D)
ans = 3×1 cell
    {'train'}
    {'plane'}
    {'car'  }

categorical 配列を作成します。この配列には、"はい" と "いいえ" を表すさまざまなカテゴリがあります。

C = categorical(["Y" "Yes" "Yeah" "N" "No" "Nope"])
C = 1×6 categorical
     Y      Yes      Yeah      N      No      Nope 

カテゴリを順番に一覧表示します。MATLAB® は文字を Unicode® として保存するため、既定ではこれらのカテゴリの並べ替え順序はアルファベット順です。

categories(C)
ans = 6×1 cell
    {'N'   }
    {'No'  }
    {'Nope'}
    {'Y'   }
    {'Yeah'}
    {'Yes' }

patternを使用すると、複数のカテゴリ名を一致させることができます。たとえば、Y で始まるカテゴリ名を指定するには、ワイルドカード パターンを使用できます。ワイルドカード パターンを作成するには、関数wildcardPatternを使用します。

カテゴリを並べ替えます。並べ替え順序を変更し、Y で始まるカテゴリが N で始まるカテゴリより前になるようにします。

C = reordercats(C,["Y"+wildcardPattern,"N"+wildcardPattern])
C = 1×6 categorical
     Y      Yes      Yeah      N      No      Nope 

カテゴリを新しい順序で一覧表示します。

categories(C)
ans = 6×1 cell
    {'Y'   }
    {'Yeah'}
    {'Yes' }
    {'N'   }
    {'No'  }
    {'Nope'}

入力引数

すべて折りたたむ

入力配列。categorical 配列として指定します。A が順序 categorical 配列である場合は、カテゴリの並べ替えにより、数学的な意味が変更されます。その結果、 > (より大きい) や < (より小さい) などの関係演算子で、異なる結果が返される場合があります。

新しいカテゴリ順序。string 配列、文字ベクトルの cell 配列、数値ベクトル、または pattern 配列として指定します。新しいカテゴリ順序は、categories(A) の順列でなければなりません。

ヒント

  • categorical 配列 B を順序 categorical 配列に変換するには、B = categorical(B,Ordinal=true) を使用します。カテゴリの順序は B = categorical(B,valueset,Ordinal=true) で指定できます。この場合、valueset の値の順序でカテゴリ順が定義されます。

拡張機能

すべて展開する

バージョン履歴

R2013b で導入