exponenta event banner

setxor

Класс: набор данных

(Не рекомендуется) Установить монопольные или для наблюдений массива наборов данных

dataset тип данных не рекомендуется. Для работы с разнородными данными используйте MATLAB ®table вместо этого тип данных. См. MATLAB table для получения дополнительной информации.

Синтаксис

C = setxor(A,B)
C = setxor(A,B,vars)
C = setxor(A,B,vars,setOrder)
[C,iA,iB] = setxor(___)

Описание

C = setxor(A,B) для dataset множества A и B возвращает набор наблюдений, которые не находятся в пересечении двух массивов, с удаленными повторениями. Наблюдения в массиве наборов данных C сортируются.

C = setxor(A,B,vars) возвращает набор наблюдений, которые не находятся в пересечении двух массивов, учитывая только переменные, указанные в vars, с удалением повторов. Наблюдения в массиве наборов данных C сортируются по этим переменным. Значения для переменных, не указанных в vars для каждого наблюдения в C взяты из соответствующего наблюдения в A или B. При наличии нескольких наблюдений в A или B которые соответствуют наблюдению в Cэти значения берутся из первого вхождения.

C = setxor(A,B,vars,setOrder) возвращает наблюдения в C в порядке, указанном setOrder.

[C,iA,iB] = setxor(___) также возвращает векторы индекса iA и iB такой, что C - сортированная комбинация значений A(iA,:) и B(iB,:). При наличии повторных наблюдений в A или B, то setxor возвращает индекс первого вхождения. Можно использовать любой из предыдущих входных аргументов.

Входные аргументы

A,B

Массивы входных наборов данных.

vars

Строковый массив или массив ячеек символьных векторов, содержащих имена переменных, или вектор целых чисел, содержащий номера переменных столбцов. vars указывает переменные в A и B это setxor рассматривает.

Определить vars как [] для использования значения по умолчанию для всех переменных.

setOrder

Флаг, указывающий порядок сортировки для наблюдений в C. Возможные значения setOrder являются:

'sorted'Наблюдения в C находятся в сортированном порядке (по умолчанию).
'stable'Наблюдения в C находятся в том же порядке, в котором они появляются A, то B.

Выходные аргументы

C

Массив наборов данных с наблюдениями не в пересечении A и B, с удалением повторов. C находится в сортированном порядке (по умолчанию) или порядке, указанном setOrder.

iA

Вектор индекса, указывающий на наблюдения из A которые находятся в C. Вектор iA содержит индекс к первому появлению любых повторных наблюдений в A.

iB

Вектор индекса, указывающий на наблюдения из B которые находятся в C. Вектор iB содержит индекс к первому появлению любых повторных наблюдений в B.

Примеры

развернуть все

Создайте массив скалярной структуры, а затем преобразуйте его в два массива наборов данных.

S(1,1).Name = 'CLARK';
S(1,1).Gender = 'M';
S(1,1).SystolicBP = 124;
S(1,1).DiastolicBP = 93;

S(2,1).Name = 'BROWN';
S(2,1).Gender = 'F';
S(2,1).SystolicBP = 122;
S(2,1).DiastolicBP = 80;

S(3,1).Name = 'MARTIN';
S(3,1).Gender = 'M';
S(3,1).SystolicBP = 130;
S(3,1).DiastolicBP = 92;

A = struct2dataset(S(1:2));
B = struct2dataset(S(2:3));

Пересечение A и B - второе наблюдение, с фамилией BROWN.

Возврат симметричной разности A и B.

[C,iA,iB] = setxor(A,B);
C
C = 
    Name              Gender       SystolicBP    DiastolicBP
    {'CLARK' }        {'M'}        124           93         
    {'MARTIN'}        {'M'}        130           92         

[iA iB]
ans = 1×2

     1     2

Симметричная разность содержит первое наблюдение из Aи второе наблюдение из B.