Объединение категориальных массивов¶
Этот пример показывает, как объединять массивы категориальных переменных.
Создание категориальных массивов¶
Создадим массив категориальных значений, где хранятся пожеланиям по напиткам на обеденный перерыв для 25 студентов в группе A
.
using Random, CategoricalArrays
Random.seed!(123)
A = rand(1:3, 25)
A = categorical(A, levels=[1,2,3], labels=["молоко", "сок", "вода"]) # Назначаем метки значениям вручную
Сводная статистика по категориальному массиву:
Pkg.add( "FreqTables" )
using FreqTables
freqtable(A)
Создадим другой категориальный массив с пожеланиями 28 студентов из группы B
.
B = rand(["молоко", "сок", "вода"], 28) # Более сжатый синтаксис
B = categorical(B)
Сводная статистика:
freqtable(B)
Объединение категориальных массивов¶
Объединим данные из классов A
и B
в один категориальный массив Group1
.
Group1 = [A; B]
Сводная статистика:
freqtable(Group1)
Создание категориального массива с другими категориями¶
Создадим категориальный массив Group2
, содержащий пожелания 50 студентов с дополнительным вариантом напитка: газировка.
Group2 = rand(["сок", "молоко", "газировка", "вода"], 50)
Group2 = categorical( Group2 )
Сводная статистика:
freqtable(Group2)
Объединение массивов с разными категориями¶
Объединим данные из Group1
и Group2
.
students = [Group1; Group2]
Сводная статистика. При объединении категории, уникальные для второго массива (газировка), добавляются в конец списка категорий первого массива (молоко, вода, сок, газировка).
freqtable(students)
Чтобы изменить порядок категорий в категориальном массиве, используем функцию levels!
.
levels!(students, ["сок", "молоко", "вода", "газировка"])
levels(students)
Объединение категориальных массивов¶
Чтобы найти уникальные значения категорий, присутствующих в Group1
и Group2
, можно использовать функцию union
.
C = union(Group1, Group2)
Заключение¶
Все категориальные массивы в этом примере были неупорядоченными. Для объединения упорядоченных категориальных массивов они должны иметь одинаковые наборы категорий, включая их порядок.