reordercats
对 categorical
数组中的类别重新排序
说明
示例
按字母顺序对非有序分类数组的类别排序
创建两个分类数组 X
和 Y
。
X = categorical({'frog';'cat';'cat';'ant';'frog'})
X = 5x1 categorical
frog
cat
cat
ant
frog
Y = categorical({'deer';'bear';'eagle';'deer'})
Y = 4x1 categorical
deer
bear
eagle
deer
X
是一个 5×1 分类数组。X
的类别是该数组中经过排序的唯一值:{'ant';'cat';'frog'}
。
Y
是一个 4×1 分类数组。Y
的类别是该数组中经过排序的唯一值:{'bear';'deer';'eagle'}
。
将 X
和 Y
串联为一个分类数组 A
。
A = [X;Y]
A = 9x1 categorical
frog
cat
cat
ant
frog
deer
bear
eagle
deer
vertcat
将 Y
中的值追加到 X
中的值后面。
列出分类数组 A
的类别。
acats = categories(A)
acats = 6x1 cell
{'ant' }
{'cat' }
{'frog' }
{'bear' }
{'deer' }
{'eagle'}
vertcat
将 Y
的类别追加到 X
中的类别后面。A
的类别不按字母顺序排列。
按字母顺序重新排列 A
的类别。
B = reordercats(A)
B = 9x1 categorical
frog
cat
cat
ant
frog
deer
bear
eagle
deer
输出分类数组 B
与输入分类数组 A
具有顺序相同的元素。
列出分类数组 B
的类别。
bcats = categories(B)
bcats = 6x1 cell
{'ant' }
{'bear' }
{'cat' }
{'deer' }
{'eagle'}
{'frog' }
B
的类别按字母顺序排列。
对非有序分类数组中的类别重新排序
创建一个包含各项目的颜色的分类数组。
A = categorical({'red';'green';'blue';'red';'green';'red';'blue';'blue'})
A = 8x1 categorical
red
green
blue
red
green
red
blue
blue
A
是一个 8×1 分类数组。
显示 A
的类别。
categories(A)
ans = 3x1 cell
{'blue' }
{'green'}
{'red' }
A
的类别按字母顺序排列且没有任何数学含义。
重新排列这些类别以匹配通常使用的色序。
B = reordercats(A,{'red','green','blue'})
B = 8x1 categorical
red
green
blue
red
green
red
blue
blue
B
与 A
包含相同的值。
显示 B
的类别。
categories(B)
ans = 3x1 cell
{'red' }
{'green'}
{'blue' }
B
不是有序的,这些类别的顺序没有任何数学含义。尽管这些类别按色谱顺序显示,但关系运算(例如大于和小于)没有任何含义。
对有序分类数组中的类别重新排序
创建一个有序分类数组 A
,其中包含交通方式。基于平均旅费对这些类别排序。
A = categorical({'plane';'car'; 'train';'car';'plane';'car'},... {'car','train','plane'},'Ordinal',true)
A = 6x1 categorical
plane
car
train
car
plane
car
A
是一个 6×1 有序分类数组。
显示 A
的类别。
categories(A)
ans = 3x1 cell
{'car' }
{'train'}
{'plane'}
因为 A
是有序的,所以 car < train < plane
。
对这些类别重新排序以按降序排列火车乘车费用。
B = reordercats(A,{'train','car','plane'})
B = 6x1 categorical
plane
car
train
car
plane
car
B
与 A
包含相同的值。
显示 B
的类别。
categories(B)
ans = 3x1 cell
{'train'}
{'car' }
{'plane'}
这些类别的数学顺序现在为 train < car < plane
。关系运算 min
和 max
的结果反映新类别顺序。
对具有数值向量的类别重新排序
创建一个分类数组 A
,其中包含交通方式。
A = categorical({'plane';'car';'train';'car';'car';'plane';'car'})
A = 7x1 categorical
plane
car
train
car
car
plane
car
显示 A
的类别。
categories(A)
ans = 3x1 cell
{'car' }
{'plane'}
{'train'}
按出现次数最少至最多的顺序对 A
中的类别重新排序。
B = countcats(A); [C,neworder] = sort(B); neworder
neworder = 3×1
3
2
1
D = reordercats(A,neworder); categories(D)
ans = 3x1 cell
{'train'}
{'plane'}
{'car' }
由于 countcats
统计每个类别的出现次数,因此 neworder
描述如何对 A
的类别而不是元素重新排序。
使用模式指定类别
创建一个 categorical
数组。此数组有许多不同类别可以表示“是”和“否”。
C = categorical(["Y" "Yes" "Yeah" "N" "No" "Nope"])
C = 1x6 categorical
Y Yes Yeah N No Nope
按顺序列出这些类别。默认情况下,这些类别的排序顺序是按字母顺序,因为 MATLAB® 将字符存储为 Unicode®。
categories(C)
ans = 6x1 cell
{'N' }
{'No' }
{'Nope'}
{'Y' }
{'Yeah'}
{'Yes' }
您可以使用pattern
匹配多个类别名称。例如,要指定以 Y
开头的类别名称,可以使用通配符模式。要创建通配符模式,请使用 wildcardPattern
函数。
对这些类别重新排序。更改排序顺序,使以 Y
开头的类别出现在以 N
开头的类别之前。
C = reordercats(C,["Y"+wildcardPattern,"N"+wildcardPattern])
C = 1x6 categorical
Y Yes Yeah N No Nope
按新顺序列出类别。
categories(C)
ans = 6x1 cell
{'Y' }
{'Yeah'}
{'Yes' }
{'N' }
{'No' }
{'Nope'}
输入参数
提示
要将分类数组
B
转换为有序分类数组,请使用B = categorical(B,'Ordinal',true)
。您可以使用B = categorical(B,
指定类别顺序,其中valueset
,'Ordinal',true)
中的值顺序定义类别顺序。valueset
扩展功能
tall 数组
对行数太多而无法放入内存的数组进行计算。
C/C++ 代码生成
使用 MATLAB® Coder™ 生成 C 代码和 C++ 代码。
基于线程的环境
使用 MATLAB® backgroundPool
在后台运行代码或使用 Parallel Computing Toolbox™ ThreadPool
加快代码运行速度。
此函数完全支持基于线程的环境。有关详细信息,请参阅Run MATLAB Functions in Thread-Based Environment。
分布式数组
使用 Parallel Computing Toolbox™ 在集群的组合内存中对大型数组进行分区。
此函数完全支持分布式数组。有关详细信息,请参阅Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox)。
版本历史记录
在 R2013b 中推出
另请参阅
categories
| addcats
| removecats
| iscategory
| mergecats
| renamecats
| setcats
MATLAB 命令
您点击的链接对应于以下 MATLAB 命令:
请在 MATLAB 命令行窗口中直接输入以执行命令。Web 浏览器不支持 MATLAB 命令。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)