Добавьте и пропустите уровни категории

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

Примечание

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

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

load('examgrades')

Массив grades содержит оценки экзамена от 0 до 100 на пяти экзаменах для выборки 120 студентов.

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

Присвойте буквенные оценки каждому студенту для каждого теста с помощью этих категорий.

Градуируйте область значенийБуквенная оценка
100+
90–99A
80–89B
70–79C
60–69D

letter = ordinal(grades,{'D','C','B','A','A+'},[],...
                 [60,70,80,90,100,100]);
getlevels(letter)
ans = 

     D      C      B      A      A+ 

Существует пять категорий класса в заданном порядке D <C <B <A <A+.

Проверяйте на неопределенные категории.

Проверяйте, существуют ли какие-либо баллы экзамена, которые не попадают в пять категорий буквы.

any(isundefined(letter))
ans =

     1     0     1     1     0

Вспомните, что существует пять музыки экзамена к каждому студенту. Предыдущая команда возвращает логическое значение для каждого из этих пяти экзаменов, указывая, существуют ли какие-либо баллы, которые являются <undefined>. Существует музыка к первым, третьим, и четвертым экзаменам, которые являются <undefined>, то есть, пропуская уровень категории.

Идентифицируйте элементы в неопределенных категориях.

Можно найти баллы экзамена, которые не имеют буквенной оценки с помощью isundefined логическое условие.

grades(isundefined(letter))
ans =

    55
    59
    58
    59
    54
    57
    56
    59
    59
    50
    59
    52

Баллы экзамена, которые находятся в 50-х, не имеют буквенной оценки.

Добавьте новую категорию.

Поместите все баллы, которые являются <undefined> в новую категорию пометил D-.

letter(isundefined(letter)) = 'D-';
getlevels(letter)
Warning: Categorical level 'D-' being added. 
> In categorical.subsasgn at 55

ans = 

     D      C      B      A      A+      D- 
Порядковая переменная, letter, добавили новую категорию в конец.

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

Переупорядочьте категории так, чтобы D- <D.

letter = reorderlevels(letter,{'D-','D','C','B','A','A+'});
getlevels(letter)
ans = 

     D-      D      C      B      A      A+ 

Сравните элементы.

Теперь, когда все баллы экзамена имеют буквенную оценку, рассчитывают, сколько студентов получило более высокую буквенную оценку на втором тесте, чем на первом тесте.

sum(letter(:,2) > letter(:,1))
ans =

    32

Тридцать два студента улучшили свою буквенную оценку между первыми двумя экзаменами.

Исследуйте категории.

Считайте количество A+ баллы на каждом из этих пяти экзаменов.

sum(letter=='A+')
ans =

     0     0     0     0     0

Нет никакого A+ баллы на любом из этих пяти экзаменов.

Пропустите категорию.

Пропустите категорию A+ от порядковой переменной, letter.

letter = droplevels(letter,'A+');
getlevels(letter)
ans = 

     D-      D      C      B      A 
Категория A+ больше не находится в порядковой переменной, letter.

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

| |

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

Больше о