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 array
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 array
medium large
small medium
large small
Сравните sizes
и sizes2
isequal(sizes,sizes2)
ans = logical
1
sizes
и sizes2
являются эквивалентными категориальными массивами с тем же упорядоченным расположением категорий.
Преобразуйте категориальный массив от непорядкового до порядкового
Создайте непорядковый категориальный массив из массива ячеек из символьных векторов, A
.
sizes3 = categorical(A)
sizes3 = 3x2 categorical array
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