categorical
является типом данных для хранения данных со значениями из конечного множества дискретных категорий, которые могут иметь естественный порядок. Вы можете задать и переставить порядок категорий во всех категориальных массивах. Однако вы можете рассматривать только порядковые категориальные массивы как имеющие математическое упорядоченное расположение для их категорий. Используйте порядковый категориальный массив, если вы хотите использовать функции min
, max
или реляционные операции, такие как больше и меньше.
Дискретный набор категорий домашних животных {'dog' 'cat' 'bird'}
не имеет значимого математического упорядоченного расположения. Вы можете свободно использовать любой порядок категорий, и значение связанных данных не изменяется. Для примера, pets = categorical({'bird','cat','dog','dog','cat'})
создает категориальный массив, и категории перечислены в алфавитном порядке, {'bird' 'cat' 'dog'}
. Вы можете выбрать, чтобы задать или изменить порядок категорий на {'dog' 'cat' 'bird'}
и смысл данных не меняется.
порядковые категориальные массивы содержат категории, которые имеют значимое математическое упорядоченное расположение. Для примера - дискретный набор категорий размеров {'small', 'medium', 'large'}
имеет математическое упорядоченное расположение small < medium < large
. Первая из перечисленных категорий является наименьшей, а последняя - самой большой. Порядок категорий в порядковом категориальном массиве влияет на результат реляционных сравнений порядковых категориальных массивов.
В этом примере показано, как создать порядковый категориальный массив с помощью categorical
функция со 'Ordinal',true
аргумент пары "имя-значение".
Порядковый категориальный массив из массива ячеек из символьных векторов
Создайте порядковый категориальный массив, sizes
, из массива ячеек из векторов символов, A
. Использование valueset
, заданный как вектор уникальных значений, для определения категорий sizes
.
A = {'medium' 'large';'small' 'medium'; 'large' 'small'}; valueset = {'small', 'medium', 'large'}; sizes = categorical(A,valueset,'Ordinal',true)
sizes = 3x2 categorical
medium large
small medium
large small
sizes
является 3 на 2 порядковым категориальным массивом с тремя категориями, такими что small < medium < large
. Порядок значений в valueset
становится порядком категорий sizes
.
Порядковый категориальный массив из целых чисел
Создайте эквивалентный категориальный массив из массива целых чисел. Используйте значения 1
, 2
, и 3
для определения категорий small
, medium
, и large
, соответственно.
A2 = [2 3; 1 2; 3 1]; valueset = 1:3; catnames = {'small','medium','large'}; sizes2 = categorical(A2,valueset,catnames,'Ordinal',true)
sizes2 = 3x2 categorical
medium large
small medium
large small
Сравнение sizes
и sizes2
isequal(sizes,sizes2)
ans = logical
1
sizes
и sizes2
являются эквивалентными категориальными массивами с тем же упорядоченным расположением категорий.
Преобразование категориального массива из неординального в порядковый
Создайте неординальный категориальный массив из массива ячеек векторов символов, A
.
sizes3 = categorical(A)
sizes3 = 3x2 categorical
medium large
small medium
large small
Определите, является ли категориальный массив порядковым.
isordinal(sizes3)
ans = logical
0
sizes3
является неординальным категориальным массивом с тремя категориями, {'large','medium','small'}
. Категории sizes3
отсортированные уникальные значения из A
. Вы должны использовать входной параметр, valueset
, для определения другого порядка категорий.
Преобразование sizes3
к порядковому категориальному массиву, такому что small < medium < large
.
sizes3 = categorical(sizes3,{'small','medium','large'},'Ordinal',true);
sizes3
теперь является порядковым категориальным массивом 3 на 2, эквивалентным sizes
и sizes2
.
Чтобы объединить или сравнить два категориальных массивов, наборы категорий для обоих входных массивов должны быть идентичными, включая их порядок. Кроме того, порядковые категориальные массивы всегда защищены. Поэтому при присвоении значений порядковому категориальному массиву значения должны принадлежать одной из существующих категорий. Дополнительные сведения см. в разделе Работа с защищенными категориальными массивами.
categorical
| categories
| isequal
| isordinal