主要内容

本页翻译不是最新的。点击此处可查看最新英文版本。

mergecats

合并分类数组中的类别

说明

B = mergecats(A,oldcats) 将分类数组的两个或多个类别合并为一个类别。默认情况下,mergecatsoldcats 中列出的所有类别合并到一个与 oldcats(1) 同名的新类别中。如果 A 的一个元素属于 oldcats 中列出的一个类别,则 B 的对应元素属于 oldcats(1)

示例

B = mergecats(A,oldcats,newcat)oldcats 中列出的所有类别合并到一个新类别中,该类别的名称由 newcat 指定。

示例

示例

全部折叠

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

A = categorical(["pink" "blue" "pink" "red" "blue" "red"])
A = 1×6 categorical
     pink      blue      pink      red      blue      red 

显示 A 的类别。这三种类别按字母顺序排序。

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

将类别 redpink 合并成类别 red。先指定 oldcats 中的 red,以将其用作合并类别。mergecats 将值 pink 替换为 red

oldcats = ["red" "pink"];
B = mergecats(A,oldcats)
B = 1×6 categorical
     red      blue      red      red      blue      red 

显示 B 的类别。新数组的类别较少。

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

创建一个分类数组,其中包含各种服装的类别。

A = categorical(["shirt" "pants" "shoes" "shirt" "dress" "belt"])
A = 1×6 categorical
     shirt      pants      shoes      shirt      dress      belt 

显示 A 的类别。如果没有指定顺序,则类别按字母顺序排列。

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

将类别 beltshoes 合并成名为 other 的新类别。值 other 将替换 beltshoes 的所有实例。

B = mergecats(A,["belt" "shoes"],"other")
B = 1×6 categorical
     shirt      pants      other      shirt      dress      other 

显示 B 的类别。新数组包含四个类别,且不再按字母顺序排序。other 出现在原来 belt 的位置,因为这是它替换的第一个类别。

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

创建一个有序分类数组。

A = categorical([1 2 3 2 1],1:3,["poor" "fair" "good"],Ordinal=true)
A = 1×5 categorical
     poor      fair      good      fair      poor 

显示 A 的类别。类别的数学顺序为 poor < fair < good

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

将所有 fairpoor 值合并到一个名为 bad 的新类别中。由于 A 是有序数组,因此要合并的类别必须具有连续性。如果它们不具有连续性,则 mergecats 无法创建一组具有数学排序的新类别。

B = mergecats(A,["fair" "poor"],"bad")
B = 1×5 categorical
     bad      bad      good      bad      bad 

显示 B 的类别。新数组包含两个采用数学排序法排序的类别:bad < good

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

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

C = categorical(["Y" "Yes" "Yeah" "N" "No" "Nope"])
C = 1×6 categorical
     Y      Yes      Yeah      N      No      Nope 

categories(C)
ans = 6×1 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 = 1×6 categorical
     yes      yes      yes      no      no      no 

categories(C)
ans = 2×1 cell
    {'no' }
    {'yes'}

输入参数

全部折叠

输入数组,指定为分类数组。

要合并的类别,指定为字符串数组、字符向量元胞数组或 pattern 标量。

  • 如果 A 是有序数组,则 oldcats 必须指定连续类别的一个子集。如果它们不具有连续性,则 mergecats 无法创建一组具有数学排序的新类别。

  • 如果 A 是非有序数组,则 oldcats 可以指定类别的任何子集。

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

扩展功能

全部展开

版本历史记录

在 R2013b 中推出