В этом примере показано, как добавлять и удалять уровни из номинального или порядкового массива.
Примечание
nominal и ordinal типы данных массива не рекомендуются. Для представления упорядоченных и неупорядоченных дискретных нечисловых данных используйте тип данных Категориальные массивы.
load('examgrades')Множество grades содержит баллы ЕГЭ от 0 до 100 на пяти экзаменах для выборки из 120 учеников.
Назначьте каждому ученику буквенные оценки для каждого теста, используя эти категории.
| Диапазон уклона | Буквенный класс |
|---|---|
| 100 | + |
| 90–99 | A |
| 80–89 | B |
| 70–79 | C |
| 60–69 | D |
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.droplevels | ordinal | reorderlevels