Main Content

mergecats

合并 categorical 数组中的类别

说明

示例

B = mergecats(A,oldcats)A 中的两个或更多类别合并成第一个类别 oldcats(1)Aoldcats 的所有值将变成 B 中的 oldcats(1)

示例

B = mergecats(A,oldcats,newcat)oldcats 合并成一个新类别 newcatAoldcats 的所有值将变成 B 中的 newcat

示例

全部折叠

创建包含各种颜色的分类数组。

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

A 是 6×1 分类数组。

显示 A 的类别。

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

这三种类别按字母顺序排序。

将类别 redpink 合并成类别 red。先指定 oldcats 中的 red,以将其用作合并类别。

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

mergecatsA(3) 中的值 pink 替换成 red

显示 B 的类别。

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

B 包含两个而非三个类别。

创建包含各种物品的分类数组。

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

显示 A 的类别。

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

这五种类别按字母顺序排序。

将类别 beltshoes 合并成名为 other 的新类别。

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

other 将替换 beltshoes 的所有实例。

显示 B 的类别。

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

B 包含四个类别,且不再按字母顺序排序。原来的 belt 改示为 other

创建一个有序分类数组。

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

显示 A 的类别。

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

由于 A 是有序数组,因此,其类别采用数学排序 poor < fair < good

考虑将所有 fairpoor 值变成 bad。由于 A 是有序数组,因此,要合并的类别必须具有连续性。

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

bad 将替换 fairpoor 的所有实例。

显示 B 的类别。

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

B 包含两个采用数学排序法排序的类别:bad < good

创建一个 categorical 数组。此数组有许多不同类别可以表示“是”和“否”。

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

您可以使用pattern匹配多个类别名称。例如,要指定以 Y 开头的类别名称,可以使用通配符模式。要创建通配符模式,请使用 wildcardPattern 函数。

将名称以 Y 开头的所有类别合并为一个名为 yes 的类别。然后将名称以 N 开头的所有类别合并为一个名为 no 的类别。因此,具有相同含义的值都属于同一类别。现在,C 只有两个类别。

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

输入参数

全部折叠

输入数组,指定为 categorical 数组。

要合并的类别,指定为字符串数组、字符向量元胞数组或 pattern 标量。如果 A 是有序数组,则要合并的类别必须具有连续性。

新类别,指定为字符串标量或字符向量。

扩展功能

版本历史记录

在 R2013b 中推出