Индексируйте и ищите Используя номинальные и порядковые массивы

Примечание

nominal и ordinal типы данных массива не рекомендуются. Чтобы представлять упорядоченный и неупорядоченные дискретные, нечисловые данные, используйте тип данных Категориальных массивов вместо этого.

Индексируйте по категориям

Часто полезно индексировать и искать данные его категорией или группу. Если вы храните категории как метки в массиве ячеек из символьных векторов или char массив, это может затруднить индекс и искать категории. При использовании номинальных или порядковых массивов вы можете легко:

  • Индексируйте элементы от конкретных категорий. И для номинальных и для порядковых массивов, можно использовать логические операторы == и ~= индексировать наблюдения, которые находятся в, или не в, конкретная категория. Для порядковых массивов, которые имеют закодированный порядок, можно также использовать неравенства, >, >=, <, и <=, найти наблюдения в категориях выше или ниже конкретной категории.

  • Ищите члены категории. В дополнение к логическому оператору ==, можно использовать ismember найти наблюдения в конкретной группе.

  • Найдите элементы, которые не находятся в заданной категории. Номинальные и порядковые массивы указывают, какие элементы не принадлежат заданной категории <undefined>. Можно использовать isundefined найти наблюдения, пропускающие категорию.

  • Удалите наблюдения, которые находятся в конкретной категории. Можно использовать логические операторы, чтобы включать или исключить наблюдения из конкретных категорий. Даже если вы удаляете все наблюдения из категории, уровень категории остается заданным, если вы не удаляете его с помощью droplevels.

Общая индексация и поиск методов

Этот пример показывает несколько общих индексаций и поиска методов.

Загрузите выборочные данные.

load carsmall;

Преобразуйте char массив, Origin, к номинальному массиву. Эта переменная содержит страну происхождения или изготовление, для каждого демонстрационного автомобиля.

Origin = nominal(Origin);

Ищите наблюдения в категории. Определите, существуют ли какие-либо автомобили в выборке, которые были произведены в Канаде.

any(Origin=='Canada')
ans = logical
   0

Нет никаких демонстрационных автомобилей, произведенных в Канаде.

Перечислите страны, которые являются уровнями Origin.

getlevels(Origin)
ans = 1x6 nominal
     France      Germany      Italy      Japan      Sweden      USA 

Индексируйте элементы, которые находятся в конкретной категории. Постройте гистограмму ускоряющих измерений для автомобилей, сделанных в США.

figure();
histogram(Acceleration(Origin=='USA'))
title('Acceleration of Cars Made in the USA')

Figure contains an axes object. The axes object with title Acceleration of Cars Made in the USA contains an object of type histogram.

Удалите наблюдения, которые находятся в конкретной категории. Удалите все автомобили, сделанные в Швеции из Origin.

Origin = Origin(Origin~='Sweden');
any(ismember(Origin,'Sweden'))
ans = logical
   0

Автомобили, сделанные в Швеции, удалены из Origin, но Sweden все еще уровень Origin.

getlevels(Origin)
ans = 1x6 nominal
     France      Germany      Italy      Japan      Sweden      USA 

Удалите Sweden от уровней Origin.

Origin = droplevels(Origin,'Sweden');
getlevels(Origin)
ans = 1x5 nominal
     France      Germany      Italy      Japan      USA 

Проверяйте на наблюдения не в заданной категории. Получите индексы для автомобилей, сделанных во Франции.

ix = find(Origin=='France')
ix = 4×1

    11
    27
    39
    61

Из Франции существует четыре автомобиля. Удалите France от уровней Origin.

Origin = droplevels(Origin,'France');

Это возвращает предупреждение, указывающее, что вы пропускаете уровень категории, который имеет элементы в нем. Эти наблюдения больше не находятся в заданной категории, обозначенной undefined.

Origin(ix)
ans = 4x1 nominal
     <undefined> 
     <undefined> 
     <undefined> 
     <undefined> 

Можно использовать isundefined искать наблюдения с неопределенной категорией.

find(isundefined(Origin))
ans = 4×1

    11
    27
    39
    61

Эти индексы соответствуют наблюдениям, которые были в категории France, прежде чем та категория была исключена из Origin.

Смотрите также

| |

Связанные примеры

Больше о