Выбор данных на основе его значений часто полезен. Этот тип выбора данных может включить создание логического вектора на основе значений в одной переменной и затем использования что логический вектор, чтобы выбрать подмножество значений в других переменных. Можно создать логический вектор для выбора данных путем нахождения значений в числовом массиве, которые находятся в пределах определенной области значений. Кроме того, можно создать логический вектор путем нахождения определенных дискретных значений. При использовании категориальных массивов вы можете легко:
Выберите элементы из конкретных категорий. Для категориальных массивов используйте логические операторы == или ~=, чтобы выбрать данные, который находится в, или не в, конкретная категория. Чтобы выбрать данные в конкретной группе категорий, используйте функцию ismember.
Для порядковых категориальных массивов используйте неравенства >, >=, < или <=, чтобы найти данные в категориях выше или ниже конкретной категории.
Удалите данные, который находится в конкретной категории. Используйте логические операторы, чтобы включать или исключить данные из конкретных категорий.
Найдите элементы, которые не находятся в заданной категории. Категориальные массивы указывают, какие элементы не принадлежат заданной категории <undefined>. Используйте функцию isundefined, чтобы найти наблюдения без заданного значения.
Этот пример показывает, как индексировать и искать категориальные массивы использования. Можно получить доступ к данным с помощью категориальных массивов, сохраненных в рамках таблицы подобным образом.
Загрузка демонстрационных данных
Загрузите демонстрационные данные, собранные от 100 пациентов.
load patients
whosName Size Bytes Class Attributes Age 100x1 800 double Diastolic 100x1 800 double Gender 100x1 12212 cell Height 100x1 800 double LastName 100x1 12416 cell Location 100x1 15008 cell SelfAssessedHealthStatus 100x1 12340 cell Smoker 100x1 100 logical Systolic 100x1 800 double Weight 100x1 800 double
Создание категориальных массивов из Массивов ячеек из символьных векторов
Gender и Location содержат данные, которые принадлежат категорий. Каждый массив ячеек содержит векторы символов, взятые от маленького набора уникальных значений (указание на два пола и три места соответственно). Преобразуйте Gender и Location к категориальным массивам.
Gender = categorical(Gender); Location = categorical(Location);
Ищите членов единственной категории
Для категориальных массивов можно использовать логические операторы == и ~=, чтобы найти данные, который находится в, или не в, конкретная категория.
Определите, существуют ли какие-либо пациенты, наблюдаемые в местоположении, 'Rampart General Hospital'.
any(Location=='Rampart General Hospital')ans = logical
0
Нет никаких пациентов, наблюдаемых в Больнице общего профиля Крепостного вала.
Ищите членов группы категорий
Можно использовать ismember, чтобы найти данные в конкретной группе категорий. Создайте логический вектор для пациентов, наблюдаемых в County General Hospital или VA Hospital.
VA_CountyGenIndex = ... ismember(Location,{'County General Hospital','VA Hospital'});
VA_CountyGenIndex является 100 1 логическим массивом, содержащим логический true (1) для каждого элемента в категориальном массиве Location, который является членом категории County General Hospital или VA Hospital. Вывод, VA_CountyGenIndex содержит 76 ненулевых элементов.
Используйте логический вектор, VA_CountyGenIndex, чтобы выбрать LastName пациентов, наблюдаемых или в County General Hospital или в VA Hospital.
VA_CountyGenPatients = LastName(VA_CountyGenIndex);
VA_CountyGenPatients 76 1 массив ячеек из символьных векторов.
Выберите Elements в конкретной категории, чтобы построить график
Используйте функцию summary, чтобы распечатать сводные данные, содержащие названия категории и число элементов в каждой категории.
summary(Location)
County General Hospital 39
St. Mary's Medical Center 24
VA Hospital 37
Location является 100 1 категориальным массивом с тремя категориями. County General Hospital происходит в 39 элементах, St. Mary s Medical Center в 24 элементах и VA Hospital в 37 элементах.
Используйте функцию summary, чтобы распечатать сводные данные Gender.
summary(Gender)
Female 53
Male 47
Gender является 100 1 категориальным массивом с двумя категориями. Female происходит в 53 элементах, и Male происходит в 47 элементах.
Используйте логический оператор ==, чтобы получить доступ к возрасту только пациенток. Затем постройте график гистограммы этого данные.
figure() histogram(Age(Gender=='Female')) title('Age of Female Patients')

histogram(Age(Gender=='Female')) отображает данные возраста на графике для этих 53 пациенток.
Удалите данные из конкретной категории
Можно использовать логические операторы, чтобы включать или исключить данные из конкретных категорий. Удалите всех пациентов, наблюдаемых в VA Hospital от переменных рабочей области, Age и Location.
Age = Age(Location~='VA Hospital'); Location = Location(Location~='VA Hospital');
Теперь, Age является 63 1 числовым массивом, и Location является 63 1 категориальным массивом.
Перечислите категории Location, а также число элементов в каждой категории.
summary(Location)
County General Hospital 39
St. Mary's Medical Center 24
VA Hospital 0
Пациенты, наблюдаемые в VA Hospital, удалены из Location, но VA Hospital является все еще категорией.
Используйте функцию removecats, чтобы удалить VA Hospital из категорий Location.
Location = removecats(Location,'VA Hospital');Проверьте, что категория, VA Hospital, была удалена.
categories(Location)
ans = 2x1 cell array
{'County General Hospital' }
{'St. Mary's Medical Center'}
Location является 63 1 категориальным массивом, который имеет две категории.
Удалите элемент
Можно удалить элементы путем индексации. Например, можно удалить первый элемент Location путем выбора остальной части элементов с Location(2:end) конец. Однако более легкий способ удалить элементы состоит в том, чтобы использовать [].
Location(1) = []; summary(Location)
County General Hospital 38
St. Mary's Medical Center 24
Location является 62 1 категориальным массивом, который имеет две категории. Удаление первого элемента не имеет никакого эффекта на другие элементы от той же категории и не удаляет саму категорию.
Проверьте на неопределенные данные
Удалите категорию County General Hospital из Location.
Location = removecats(Location,'County General Hospital');Отобразите первые восемь элементов категориального массива, Location.
Location(1:8)
ans = 8x1 categorical array
St. Mary's Medical Center
<undefined>
St. Mary's Medical Center
St. Mary's Medical Center
<undefined>
<undefined>
St. Mary's Medical Center
St. Mary's Medical Center
После удаления категории, County General Hospital, элементы, которые ранее не принадлежали той категории больше, принадлежат любой категории, заданной для Location. Категориальные массивы обозначают эти элементы как undefined.
Используйте функциональный isundefined, чтобы найти наблюдения, которые не принадлежат никакой категории.
undefinedIndex = isundefined(Location);
undefinedIndex является 62 1 категориальным массивом, содержащим логический true (1) для всех неопределенных элементов в Location.
Установите неопределенные элементы
Используйте функцию summary, чтобы распечатать количество неопределенных элементов в Location.
summary(Location)
St. Mary's Medical Center 24
<undefined> 38
Первый элемент Location принадлежит категории, St. Mary's Medical Center. Установите первый элемент быть undefined так, чтобы это больше не принадлежало никакой категории.
Location(1) = '<undefined>';
summary(Location) St. Mary's Medical Center 23
<undefined> 39
Можно сделать выбранные элементы undefined, не удаляя категорию или изменив категории других элементов. Элементы набора, чтобы быть undefined, чтобы указать на элементы со значениями, которые неизвестны.
Предварительно выделите Категориальные массивы с неопределенными элементами
Можно использовать неопределенные элементы, чтобы предварительно выделить размер категориального массива для лучшей производительности. Создайте категориальный массив, который имеет элементы с известными местоположениями только.
definedIndex = ~isundefined(Location); newLocation = Location(definedIndex); summary(newLocation)
St. Mary's Medical Center 23
Расширьте размер newLocation так, чтобы это был 200 1 категориальный массив. Установите последний новый элемент быть undefined. Все другие новые элементы также собираются быть undefined. 23 исходных элемента сохраняют значения, которые они имели.
newLocation(200) = '<undefined>';
summary(newLocation) St. Mary's Medical Center 23
<undefined> 177
newLocation имеет пространство для значений, которые вы планируете сохранить в массиве позже.
любой | категориальный | категории | гистограмма | isundefined | removecats | сводные данные