nominal и ordinal типы данных массива не рекомендуются. Чтобы представлять упорядоченный и неупорядоченные дискретные, нечисловые данные, используйте Категориальные массивы (MATLAB) тип данных вместо этого.
В этом примере показано, как переупорядочить уровни категории в порядковом массиве с помощью reorderlevels.
Загрузка демонстрационных данных.
AllSizes = {'medium','large','small','small','medium',...
'large','medium','small'};Созданная переменная, AllSizes, массив ячеек из символьных векторов, содержащий измерения размера на восьми объектах.
Создайте порядковый массив.
Преобразуйте AllSizes к порядковому массиву, не задавая порядок уровней категории.
size = ordinal(AllSizes); getlevels(size)
ans = 1x3 ordinal array
large medium small
По умолчанию категории упорядочены их метками в возрастающем алфавитном порядке, large <medium <small.
Сравните элементы.
Проверяйте, действительно ли первый объект (который имеет размер medium) меньше, чем второй объект (который имеет размер large).
size(1) < size(2)
ans = logical
0
Логическое значение 0 указывает, что средний объект не меньше, чем большой объект.
Переупорядочьте уровни категории.
Переупорядочьте уровни категории так, чтобы small <medium <large.
size = reorderlevels(size,{'small','medium','large'});
getlevels(size)ans = 1x3 ordinal array
small medium large
Сравните элементы.
Проверьте, что первый объект теперь меньше, чем второй объект.
size(1) < size(2)
ans = logical
1
Логическое значение 1 указывает, что ожидаемое неравенство теперь содержит.
В этом примере показано, как переупорядочить уровни категории в номинальных массивах с помощью reorderlevels. По определению номинальные категории массивов не имеют никакого естественного упорядоченного расположения. Однако вы можете хотеть изменить порядок уровней в аналитических целях или отображении. Например, подбирая модель регрессии с категориальными ковариантами, fitlm использует первый уровень номинальной независимой переменной как ссылочная категория.
Загрузка демонстрационных данных.
Массив набора данных, hospital, содержит переменные, измеренные на 100 демонстрационных пациентах. Переменная Weight содержит вес каждого пациента. Переменная Sex номинальная переменная, содержащая пол, Male или Female, для каждого пациента.
load hospital
getlevels(hospital.Sex)ans = 1x2 nominal array
Female Male
По умолчанию порядок номинальных категорий находится в возрастающем алфавитном порядке меток.
Отобразите на графике данные, сгруппированные по категориям уровень.
Чертите диаграммы веса, сгруппированного полом.
figure
boxplot(hospital.Weight,hospital.Sex)
title('Weight by Gender')
Диаграммы появляются в том же алфавитном порядке, возвращенном getlevels.
Измените порядок категории.
Измените порядок уровней категории.
hospital.Sex = reorderlevels(hospital.Sex,{'Male','Female'});
getlevels(hospital.Sex)ans = 1x2 nominal array
Male Female
Уровни находятся в недавно заданном порядке.
Отобразите данные на графике в новом порядке.
Чертите диаграммы веса полом.
figure
boxplot(hospital.Weight,hospital.Sex)
title('Weight by Gender')
Порядок диаграмм соответствует новому порядку уровня.
fitlm | getlevels | nominal | ordinal | reorderlevels