exponenta event banner

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

Примечание

nominal и ordinal типы данных массива не рекомендуются. Для представления упорядоченных и неупорядоченных дискретных нечисловых данных используйте тип данных Категориальные массивы.

Изменение порядка уровней категорий в порядковых массивах

В этом примере показано, как переупорядочить уровни категорий в порядковом массиве с помощью 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')

Figure contains an axes. The axes with title Weight by Gender contains 14 objects of type line.

Прямоугольные графики отображаются в том же алфавитном порядке, что и 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')

Figure contains an axes. The axes with title Weight by Gender contains 14 objects of type line.

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

См. также

| | | |

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

Подробнее