Accelerating the pace of engineering and science

# Documentation

## Add and Drop Category Levels

This example shows how to add and drop levels from a categorical array.

`load('examgrades')`

The array grades contains exam scores from 0 to 100 on five exams for a sample of 120 students.

Create an ordinal array.

Assign letter grades to each student for each test using these categories.

100A+
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+ ```

There are five grade categories, in the specified order D < C < B < A < A+.

Check for undefined categories.

Check whether or not there are any exam scores that do not fall into the five letter categories.

`any(isundefined(letter))`
```ans =

1     0     1     1     0```

Recall that there are five exam scores for each student. The previous command returns a logical value for each of the five exams, indicating whether there are any scores that are <undefined>. There are scores for the first, third, and fourth exams that are <undefined>, that is, missing a category level.

Identify elements in undefined categories.

You can find the exam scores that do not have a letter grade using the isundefined logical condition.

`grades(isundefined(letter))`
```ans =

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

The exam scores that are in the 50s do not have a letter grade.

Put all scores that are <undefined> into a new category labeled 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- ```

The ordinal variable, letter, has a new category added to the end.

Reorder category levels.

Reorder the categories so that D- < D.

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

D-      D      C      B      A      A+ ```

Compare elements.

Now that all exam scores have a letter grade, count how many students received a higher letter grade on the second test than on the first test.

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

32```

Thirty-two students improved their letter grade between the first two exams.

Explore categories.

Count the number of A+ scores in each of the five exams.

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

0     0     0     0     0```

There are no A+ scores on any of the five exams.

Drop a category.

Drop the category A+ from the ordinal variable, letter.

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

D-      D      C      B      A ```

Category A+ is no longer in the ordinal variable, letter.