本文演示了如何合并两个分类数组。
创建分类数组 A,其中包含教室 A 中的 25 个学生的首选午餐饮料。
rng('default')
A = randi(3,[25,1]);
A = categorical(A,1:3,{'milk' 'water' 'juice'});
A 是一个 25×1 的分类数组,包含三个不同的类别:milk、water 和 juice。
汇总分类数组 A。
summary(A)
milk 6
water 5
juice 14
教室 A 中的六个学生喜欢牛奶,五个学生喜欢水,十四个学生喜欢果汁。
创建另外一个分类数组 B,其中包含教室 B 中的 28 个学生的首选饮料。
B = randi(3,[28,1]);
B = categorical(B,1:3,{'milk' 'water' 'juice'});
B 是一个 28×1 的分类数组,包含与 A 相同的类别。
汇总分类数组 B。
summary(B)
milk 9
water 8
juice 11
教室 B 中的九个学生喜欢牛奶,八个学生喜欢水,七个学生喜欢果汁。
将教室 A 和 B 中的数据串联为一个单独的分类数组 Group1。
Group1 = [A;B];
汇总分类数组 Group1
summary(Group1)
milk 15
water 13
juice 25
Group1 是一个包含以下三个类别的 53×1 分类数组:milk、water 和 juice。
创建一个分类数组 Group2,其中包含为其提供了额外的苏打饮料选择的 50 个学生的数据。
Group2 = randi(4,[50,1]);
Group2 = categorical(Group2,1:4,{'juice' 'milk' 'soda' 'water'});
汇总分类数组 Group2。
summary(Group2)
juice 12
milk 14
soda 10
water 14
Group2 是一个包含以下四个类别的 50×1 分类数组:juice、milk、soda 和 water。
串联 Group1 和 Group2 中的数据。
students = [Group1;Group2];
汇总生成的分类数组 students。
summary(students)
milk 29
water 27
juice 37
soda 10
串联操作会将第二个输入所独有的类别 soda 追加到第一个输入的类别列表的末尾:milk、water、juice、soda。
使用 reordercats 更改分类数组 students 中的类别顺序。
students = reordercats(students,{'juice','milk','water','soda'});
categories(students)
ans = 4x1 cell
{'juice'}
{'milk' }
{'water'}
{'soda' }
使用函数 union 可查找 Group1 和 Group2 中的唯一响应。
C = union(Group1,Group2)
C = 4x1 categorical
milk
water
juice
soda
union 返回 Group1 和 Group2 的合并值并且没有重复项。在本例中,C 等效于串联的类别 students。
此示例中的所有分类数组都不是有序的。要合并有序分类数组,它们必须具有相同的类别集合,包括其顺序。