# mergecats

Merge categories in categorical array

## Syntax

``B = mergecats(A,oldcats)``
``B = mergecats(A,oldcats,newcat)``

## Description

example

````B = mergecats(A,oldcats)` merges two or more categories in `A` into the first category, `oldcats(1)`. Any values in `A` from `oldcats` become `oldcats(1)` in `B`.```

example

````B = mergecats(A,oldcats,newcat)` merges `oldcats` into a single new category, `newcat`. Any values in `A` from `oldcats` become `newcat` in `B`.```

## Examples

collapse all

Create a categorical array containing various colors.

`A = categorical({'red';'blue';'pink';'red';'blue';'red'})`
```A = 6x1 categorical red blue pink red blue red ```

`A` is a 6-by-1 categorical array.

Display the categories of `A`.

`categories(A)`
```ans = 3x1 cell {'blue'} {'pink'} {'red' } ```

The three categories are in alphabetical order.

Merge the categories `red` and `pink` into the category `red`. Specify `red` first in `oldcats` to use it as the merged category.

```oldcats = {'red','pink'}; B = mergecats(A,oldcats)```
```B = 6x1 categorical red blue red red blue red ```

`mergecats` replaces the value `pink` from `A(3)` with `red`.

Display the categories of `B`.

`categories(B)`
```ans = 2x1 cell {'blue'} {'red' } ```

`B` has two categories instead of three.

Create a categorical array containing various items.

`A = categorical({'shirt' 'pants'; 'shoes' 'shirt'; 'dress' 'belt'})`
```A = 3x2 categorical shirt pants shoes shirt dress belt ```

Display the categories of `A`.

`categories(A)`
```ans = 5x1 cell {'belt' } {'dress'} {'pants'} {'shirt'} {'shoes'} ```

The five categories are in alphabetical order.

Merge the categories `belt` and `shoes` into a new category called `other`.

`B = mergecats(A,{'belt' 'shoes'},'other')`
```B = 3x2 categorical shirt pants other shirt dress other ```

The value `other` replaces all instances of `belt` and `shoes`.

Display the categories of `B`.

`categories(B)`
```ans = 4x1 cell {'other'} {'dress'} {'pants'} {'shirt'} ```

`B` has four categories and the order is no longer alphabetical. `other` appears in place of `belt`.

Create an ordinal categorical array.

`A = categorical([1 2 3 2 1],1:3,{'poor','fair','good'},'Ordinal',true)`
```A = 1x5 categorical poor fair good fair poor ```

Display the categories of `A`.

`categories(A)`
```ans = 3x1 cell {'poor'} {'fair'} {'good'} ```

Since `A` is ordinal, the categories have the mathematical ordering `poor < fair < good`.

Consider all `fair` or `poor` values to be `bad`. Since `A` is ordinal, the categories to merge must be consecutive.

`B = mergecats(A,{'fair' 'poor'},'bad')`
```B = 1x5 categorical bad bad good bad bad ```

The value `bad` replaces all instances of `fair` and `poor`.

Display the categories of `B`.

`categories(B)`
```ans = 2x1 cell {'bad' } {'good'} ```

`B` has two categories with the mathematical ordering: `bad < good`.

## Input Arguments

collapse all

Categorical array, specified as a vector, matrix, or multidimensional array.

Categories to merge, specified as a cell array of character vectors or a string array. If `A` is ordinal, then the categories to merge must be consecutive.

New category, specified as a character vector or a string scalar.