Переупорядочьте уровни категории

Примечание

nominal и ordinal типы данных массива не рекомендуются. Чтобы представлять упорядоченный и неупорядоченные дискретные, нечисловые данные, используйте Категориальные массивы (MATLAB) тип данных вместо этого.

Переупорядочьте уровни категории в порядковых массивах

В этом примере показано, как переупорядочить уровни категории в порядковом массиве с помощью reorderlevels.

Загрузка демонстрационных данных.

AllSizes = {'medium','large','small','small','medium',...
            'large','medium','small'};

Созданная переменная, AllSizes, массив ячеек из символьных векторов, содержащий измерения размера на восьми объектах.

Создайте порядковый массив.

Преобразуйте AllSizes к порядковому массиву, не задавая порядок уровней категории.

size = ordinal(AllSizes);
getlevels(size)
ans = 1x3 ordinal
     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
     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
     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
     Male      Female 

Уровни находятся в недавно заданном порядке.

Отобразите данные на графике в новом порядке.

Чертите диаграммы веса полом.

figure
boxplot(hospital.Weight,hospital.Sex)
title('Weight by Gender')

Порядок диаграмм соответствует новому порядку уровня.

Смотрите также

| | | |

Связанные примеры

Больше о