# 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`.

Create a `categorical` array. This array has many different categories that can stand for "yes" and "no".

`C = categorical(["Y" "Yes" "Yeah" "N" "No" "Nope"])`
```C = 1x6 categorical Y Yes Yeah N No Nope ```
`categories(C)`
```ans = 6x1 cell {'N' } {'No' } {'Nope'} {'Y' } {'Yeah'} {'Yes' } ```

You can match multiple category names by using a `pattern`. For example, to specify category names that start with a `Y`, you can use a wildcard pattern. To create a wildcard pattern, use the `wildcardPattern` function.

Merge all categories whose names start with `Y` into one category named `yes`. Then merge all the categories whose names start with `N` into one category named `no`. As a result, values that have the same meaning are all in the same category. Now, `C` has only two categories.

```C = mergecats(C,"Y" + wildcardPattern,"yes"); C = mergecats(C,"N" + wildcardPattern,"no")```
```C = 1x6 categorical yes yes yes no no no ```
`categories(C)`
```ans = 2x1 cell {'no' } {'yes'} ```

## Input Arguments

collapse all

Input array, specified as a `categorical` array.

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

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

## Version History

Introduced in R2013b