reordercats
对分类数组中的类别重新排序
说明
示例
创建一个分类数组时,类别始终有一定的顺序。但是,如果您稍后添加类别,则该组新类别的顺序可能会出现问题。要按字母数字顺序排列类别,请使用 reordercats
函数。
例如,串联两个分类数组。然后对结果的类别重新排序。
首先创建数组。
X = categorical(["Frog" "Cat" "Cat" "Ant" "Frog"])
X = 1×5 categorical
Frog Cat Cat Ant Frog
Y = categorical(["Deer" "Bear" "Eagle" "Deer"])
Y = 1×4 categorical
Deer Bear Eagle Deer
每个数组的类别按字母数字顺序排列。
Xcats = categories(X)
Xcats = 3×1 cell
{'Ant' }
{'Cat' }
{'Frog'}
Ycats = categories(Y)
Ycats = 3×1 cell
{'Bear' }
{'Deer' }
{'Eagle'}
然后将 X
和 Y
串联成一个分类数组。
A = [X Y]
A = 1×9 categorical
Frog Cat Cat Ant Frog Deer Bear Eagle Deer
列出类别。该组合并后的类别没有按字母数字顺序排列。串联只是将一组类别追加到另一组类别的末尾。
Acats = categories(A)
Acats = 6×1 cell
{'Ant' }
{'Cat' }
{'Frog' }
{'Bear' }
{'Deer' }
{'Eagle'}
对这些类别重新排序。输出分类数组与输入数组具有相同的元素。
B = reordercats(A)
B = 1×9 categorical
Frog Cat Cat Ant Frog Deer Bear Eagle Deer
列出类别。现在,该组合并后的类别按字母数字顺序排列。
Bcats = categories(B)
Bcats = 6×1 cell
{'Ant' }
{'Bear' }
{'Cat' }
{'Deer' }
{'Eagle'}
{'Frog' }
创建一个分类数组。
A = categorical(["red" "green" "blue" "red" "green" "red" "blue" "blue"])
A = 1×8 categorical
red green blue red green red blue blue
显示类别。它们按字母数字顺序排列。
categories(A)
ans = 3×1 cell
{'blue' }
{'green'}
{'red' }
对这些类别重新排序。
B = reordercats(A,["red" "green" "blue"])
B = 1×8 categorical
red green blue red green red blue blue
显示类别。它们现在按色谱常用的 RGB 顺序排列。
categories(B)
ans = 3×1 cell
{'red' }
{'green'}
{'blue' }
由于数组不是有序分类数组,因此类别的顺序没有数学意义。尽管这些类别按色谱顺序显示,但关系运算(例如大于和小于)没有任何含义。
创建一个包含交通方式的有序分类数组。根据每种交通方式的平均旅行成本对类别进行排序。
A = categorical(["plane" "car" "train" "car" "plane" "car"], ... ["car" "train" "plane"], ... Ordinal=true)
A = 1×6 categorical
plane car train car plane car
显示类别。由于数组 A
是有序数组,car < train < plane
。
categories(A)
ans = 3×1 cell
{'car' }
{'train'}
{'plane'}
例如,其类别为 plane
或 train
的任何元素都大于类别 car
。
A(A > "car")
ans = 1×3 categorical
plane train plane
对这些类别重新排序以按降序排列火车乘车费用。
B = reordercats(A,["train" "car" "plane"])
B = 1×6 categorical
plane car train car plane car
显示类别。这些类别的数学顺序现在为 train < car < plane
。
categories(B)
ans = 3×1 cell
{'train'}
{'car' }
{'plane'}
例如,train
不再大于 car
。关系运算 min
和 max
的结果反映新类别顺序。
B(B > "car")
ans = 1×2 categorical
plane plane
创建一个包含交通方式的分类数组。
A = categorical(["plane" "car" "train" "car" "car" "plane" "car"])
A = 1×7 categorical
plane car train car car plane car
显示类别。
categories(A)
ans = 3×1 cell
{'car' }
{'plane'}
{'train'}
使用 countcats
函数计算每个类别在数组中出现的次数。
B = countcats(A)
B = 1×3
4 2 1
创建一个从出现频率最低的类别到出现频率最高的类别的顺序。要将该顺序指定为数值向量,请使用 sort
函数的第二个输出。输出 neworder
描述如何对分类数组的类别(而不是元素)重新排序。
[C,neworder] = sort(B); neworder
neworder = 1×3
3 2 1
按出现次数最少至最多的顺序对数组中的类别重新排序。
D = reordercats(A,neworder); categories(D)
ans = 3×1 cell
{'train'}
{'plane'}
{'car' }
创建一个分类数组。此数组有许多不同类别可以表示“是”和“否”。
C = categorical(["Y" "Yes" "Yeah" "N" "No" "Nope"])
C = 1×6 categorical
Y Yes Yeah N No Nope
按顺序列出这些类别。默认情况下,这些类别的排序顺序是按字母顺序,因为 MATLAB® 将字符存储为 Unicode®。
categories(C)
ans = 6×1 cell
{'N' }
{'No' }
{'Nope'}
{'Y' }
{'Yeah'}
{'Yes' }
您可以使用pattern
匹配多个类别名称。例如,要指定以 Y
开头的类别名称,可以使用通配符模式。要创建通配符模式,请使用 wildcardPattern
函数。
对这些类别重新排序。更改排序顺序,使以 Y
开头的类别出现在以 N
开头的类别之前。
C = reordercats(C,["Y"+wildcardPattern,"N"+wildcardPattern])
C = 1×6 categorical
Y Yes Yeah N No Nope
按新顺序列出类别。
categories(C)
ans = 6×1 cell
{'Y' }
{'Yeah'}
{'Yes' }
{'N' }
{'No' }
{'Nope'}
输入参数
提示
要将分类数组
B
转换为有序分类数组,请使用B = categorical(B,Ordinal=true)
。您可以使用B = categorical(B,
指定类别顺序,其中valueset
,Ordinal=true)
中的值顺序定义类别顺序。valueset
扩展功能
reordercats
函数完全支持 tall 数组。有关详细信息,请参阅 tall 数组。
此函数完全支持基于线程的环境。有关详细信息,请参阅在基于线程的环境中运行 MATLAB 函数。
此函数完全支持分布式数组。有关详细信息,请参阅使用分布式数组运行 MATLAB 函数 (Parallel Computing Toolbox)。
版本历史记录
在 R2013b 中推出
另请参阅
categories
| addcats
| removecats
| iscategory
| mergecats
| renamecats
| setcats
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
选择网站
选择网站以获取翻译的可用内容,以及查看当地活动和优惠。根据您的位置,我们建议您选择:。
您也可以从以下列表中选择网站:
如何获得最佳网站性能
选择中国网站(中文或英文)以获得最佳网站性能。其他 MathWorks 国家/地区网站并未针对您所在位置的访问进行优化。
美洲
- América Latina (Español)
- Canada (English)
- United States (English)
欧洲
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)