合并分类数组¶
本例演示如何合并分类变量数组。
创建分类数组¶
让我们创建一个分类值数组,存储A
组中 25 名学生的午餐饮品请求。
In [ ]:
using Random, CategoricalArrays
Random.seed!(123)
A = rand(1:3, 25)
A = categorical(A, levels=[1,2,3], labels=["молоко", "сок", "вода"]) # Назначаем метки значениям вручную
Out[0]:
分类数组的汇总统计:
In [ ]:
Pkg.add( "FreqTables" )
In [ ]:
using FreqTables
freqtable(A)
Out[0]:
让我们创建另一个分类数组,其中包含来自B
组的 28 名学生的意愿。
In [ ]:
B = rand(["молоко", "сок", "вода"], 28) # Более сжатый синтаксис
B = categorical(B)
Out[0]:
汇总统计:
In [ ]:
freqtable(B)
Out[0]:
合并分类数组¶
让我们把A
和B
两个类的数据合并成一个分类数组Group1
。
In [ ]:
Group1 = [A; B]
Out[0]:
汇总统计:
In [ ]:
freqtable(Group1)
Out[0]:
创建包含其他类别的分类数组¶
让我们创建一个分类数组Group2
,其中包含 50 个学生的愿望和一个额外的饮料选项:gazarivka。
In [ ]:
Group2 = rand(["сок", "молоко", "газировка", "вода"], 50)
Group2 = categorical( Group2 )
Out[0]:
汇总统计:
In [ ]:
freqtable(Group2)
Out[0]:
合并不同类别的数组¶
让我们将Group1
和Group2
中的数据结合起来。
In [ ]:
students = [Group1; Group2]
Out[0]:
统计摘要。合并时,将第二个数组(gazarovka)中独有的类别添加到第一个数组(牛奶、水、果汁、苏打水)类别列表的末尾。
In [ ]:
freqtable(students)
Out[0]:
要改变分类数组中类别的顺序,我们可以使用函数levels!
。
In [ ]:
levels!(students, ["сок", "молоко", "вода", "газировка"])
levels(students)
Out[0]:
合并分类数组¶
要查找Group1
和Group2
中类别的唯一值,可以使用函数union
。
In [ ]:
C = union(Group1, Group2)
Out[0]:
结论¶
本例中的所有分类数组都是无序的。要合并有序分类数组,它们必须具有相同的类别集,包括它们的顺序。