Документация Engee

CategoricalArrays

Пакет предоставляет тип CategoricalArray, предназначенный для эффективного и удобного хранения категориальных данных (неупорядоченных или номинальных или упорядоченных или порядковых). CategoricalArray{T} содержит значения типа T. Вариант CategoricalArray{Union{T, Missing}} может также содержать отсутствующие значения (представленные как missing и имеющие тип Missing). При индексировании CategoricalArray{T} возвращает специальные объекты CategoricalValue{T}, а не исходные значения типа T. CategoricalValue является простой оболочкой вокруг категориальных уровней и позволяет очень эффективно извлекать и сравнивать фактические значения. Более простые типы массивов, хранящие данные с небольшим количеством значений без их заключения в оболочку, доступны в пакетах PooledArrays.jl и IndirectArrays.jl.

Главная особенность CategoricalArray заключается в том, что он поддерживает пул уровней, которые могут появиться в данных. Эти уровни хранятся в определенном порядке: для неупорядоченных массивов этот порядок используется только для красивого отображения (например, в перекрестных таблицах или графиках). Для упорядоченных массивов он также позволяет сравнивать значения с помощью операторов < и >: сравнение происходит на основе упорядочения уровней, хранящихся в массиве. Упорядоченное значение CategoricalValue можно также сравнить со значением, которое при преобразовании равно одному из уровней этого CategoricalValue. Упорядочен ли массив, можно определить либо при построении с помощью аргумента ordered, либо в любой момент с помощью функции ordered!. Функция levels возвращает все уровни CategoricalArray, а функцию levels! можно использовать для задания уровней и их порядка. Уровни также автоматически расширяются при задании для элемента массива значения уровня, который ранее не встречался. Однако их удаление всегда выполняется вручную с помощью функции droplevels!.