mergecats

Merge categories in categorical array

Syntax

  • B = mergecats(A,oldcats) example
  • B = mergecats(A,oldcats,newcat) example

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

expand all

Merge Two Categories into One

Create a categorical array containing various colors.

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

     red 
     blue 
     pink 
     red 
     blue 
     red 

A is a 6-by-1 categorical array.

Display the categories of A.

categories(A)
ans = 

    '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 = 

     red 
     blue 
     red 
     red 
     blue 
     red 

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

Display the categories of B.

categories(B)
ans = 

    'blue'
    'red'

B has two categories instead of three.

Merge Alphabetically Listed Categories

Create a categorical array containing various items.

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

     shirt      pants 
     shoes      shirt 
     dress      belt  

Display the categories of A.

categories(A)
ans = 

    '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 = 

     shirt      pants 
     other      shirt 
     dress      other 

The value other replaces all instances of belt and shoes.

Display the categories of B.

categories(B)
ans = 

    'other'
    'dress'
    'pants'
    'shirt'

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

Merge Categories of Ordinal Categorical Array

Create an ordinal categorical array.

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

     poor      fair      good      fair      poor 

Display the categories of A.

categories(A)
ans = 

    '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 = 

     bad      bad      good      bad      bad 

The value bad replaces all instances of fair and poor.

Display the categories of B.

categories(B)
ans = 

    'bad'
    'good'

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

Input Arguments

expand all

A — Categorical arrayvector | matrix | multidimensional array

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

oldcats — Categories to mergecell array of strings

Categories to merge, specified as a cell array of strings. If A is ordinal, the categories to merge must be consecutive.

newcat — New categoryoldcats(1) (default) | string

New category, specified as a string.

Was this topic helpful?