Выбор данных на основе его значений часто полезен. Этот тип выбора данных может включить создание логического вектора на основе значений в одной переменной и затем использования что логический вектор, чтобы выбрать подмножество значений в других переменных. Можно создать логический вектор для выбора данных путем нахождения значений в числовом массиве, которые находятся в пределах определенной области значений. Кроме того, можно создать логический вектор путем нахождения определенных дискретных значений. При использовании категориальных массивов вы можете легко:
Выберите элементы из конкретных категорий. Для категориальных массивов используйте логические операторы ==
или ~=
выбрать данные, которые находятся в, или не в, конкретная категория. Чтобы выбрать данные в конкретной группе категорий, используйте ismember
функция.
Для порядковых категориальных массивов используйте неравенства >
, >=
, <
, или <=
найти данные в категориях выше или ниже конкретной категории.
Удалите данные, которые находятся в конкретной категории. Используйте логические операторы, чтобы включать или исключить данные из конкретных категорий.
Найдите элементы, которые не находятся в заданной категории. Категориальные массивы указывают, какие элементы не принадлежат заданной категории <undefined>
. Используйте isundefined
функционируйте, чтобы найти наблюдения без заданного значения.
В этом примере показано, как индексировать и искать категориальные массивы использования. Можно получить доступ к данным с помощью категориальных массивов, сохраненных в рамках таблицы подобным образом.
Загрузка демонстрационных данных
Загрузите выборочные данные, собранные от 100 пациентов.
load patients
whos
Name Size Bytes Class Attributes Age 100x1 800 double Diastolic 100x1 800 double Gender 100x1 11412 cell Height 100x1 800 double LastName 100x1 11616 cell Location 100x1 14208 cell SelfAssessedHealthStatus 100x1 11540 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
{'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
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
имеет пространство для значений, которые вы планируете сохранить в массиве позже.
any
| categorical
| categories
| histogram
| isundefined
| removecats
| summary