union

Установите объединение двух массивов

Описание

пример

C = union(A,B) возвращает объединенные данные из A и B без повторений. C находится в отсортированном порядке.

  • Если A и B таблицы или расписания, затем union возвращает объединенный набор строк из обеих таблиц. Для расписаний, union принимает времена строки во внимание, чтобы определить равенство и сортирует выходное расписание C ко временам строки.

пример

C = union(A,B,setOrder) возвращает C в определенном порядке. setOrder может быть 'sorted' или 'stable'.

C = union(A,B,___,'rows') и C = union(A,B,'rows',___) обработайте каждую строку A и каждая строка B как одна сущности и возвращают объединенные строки в A и B, без повторений. Необходимо задать A и B и опционально может задать setOrder.

'rows' опция не поддерживает массивы ячеек, если одни из входных параметров не являются или категориальным массивом или массивом datetime.

пример

[C,ia,ib] = union(___) также возвращает векторы индекса ia и ib использование любого из предыдущих синтаксисов.

  • Обычно значения в C отсортированная комбинация элементов A(ia) и B(ib).

  • Если 'rows' опция задана, затем строки C отсортированная комбинация строк A(ia,:) и B(ib,:).

  • Если A и B таблицы или расписания, затем C отсортированная комбинация строк A(ia,:) и B(ib,:).

пример

[C,ia,ib] = union(A,B,'legacy') и [C,ia,ib] = union(A,B,'rows','legacy') сохраните поведение union функция от R2012b и предшествующих релизов.

'legacy' опция не поддерживает категориальные массивы, массивы datetime, массивы длительности, таблицы или расписания.

Примеры

свернуть все

Задайте два вектора со значением вместе.

A = [5 7 1]; 
B = [3 1 1];

Найдите объединение векторов A и B.

C = union(A,B)
C = 1×4

     1     3     5     7

Задайте две таблицы со строками вместе.

A = table([1:5]',['A';'B';'C';'D';'E'],logical([0;1;0;1;0]))
A=5×3 table
    Var1    Var2    Var3 
    ____    ____    _____

     1       A      false
     2       B      true 
     3       C      false
     4       D      true 
     5       E      false

B = table([1:2:10]',['A';'C';'E';'G';'I'],logical(zeros(5,1)))
B=5×3 table
    Var1    Var2    Var3 
    ____    ____    _____

     1       A      false
     3       C      false
     5       E      false
     7       G      false
     9       I      false

Найдите объединение таблиц A и B.

C = union(A,B)
C=7×3 table
    Var1    Var2    Var3 
    ____    ____    _____

     1       A      false
     2       B      true 
     3       C      false
     4       D      true 
     5       E      false
     7       G      false
     9       I      false

Задайте два вектора со значением вместе.

A = [5 7 1]; 
B = [3 1 1];

Найдите объединение векторов A и B, а также векторы индекса, ia и ib.

[C,ia,ib] = union(A,B)
C = 1×4

     1     3     5     7

ia = 3×1

     3
     1
     2

ib = 1

Значения в C общая стоимость A(ia) и B(ib).

Задайте таблицу, A, из пола, возраста и высоты для трех человек.

A = table(['M';'M';'F'],[27;52;31],[74;68;64],...
'VariableNames',{'Gender' 'Age' 'Height'},...
'RowNames',{'Ted' 'Fred' 'Betty'})
A=3×3 table
             Gender    Age    Height
             ______    ___    ______

    Ted        M       27       74  
    Fred       M       52       68  
    Betty      F       31       64  

Задайте таблицу, B с теми же переменными как A.

B = table(['F';'M'],[64;68],[31;47],...
'VariableNames',{'Gender' 'Height' 'Age'},...
'RowNames',{'Meg' 'Joe'})
B=2×3 table
           Gender    Height    Age
           ______    ______    ___

    Meg      F         64      31 
    Joe      M         68      47 

Найдите объединение таблиц A и B, а также векторы индекса, ia и ib.

[C,ia,ib] = union(A,B)
C=4×3 table
             Gender    Age    Height
             ______    ___    ______

    Betty      F       31       64  
    Ted        M       27       74  
    Joe        M       47       68  
    Fred       M       52       68  

ia = 3×1

     3
     1
     2

ib = 2

Данные для Meg и Betty то же самое. union только возвращает индекс в A, который соответствует Betty.

Задайте две матрицы со строкой вместе.

A = [2 2 2; 0 0 1];
B = [1 2 3; 2 2 2; 2 2 2];

Найдите объединенные строки A и B, без повторения, а также векторов индекса ia и ib.

[C,ia,ib] = union(A,B,'rows')
C = 3×3

     0     0     1
     1     2     3
     2     2     2

ia = 2×1

     2
     1

ib = 1

Строки C объединенные строки A(ia,:) и B(ib,:).

Используйте setOrder аргумент, чтобы задать упорядоченное расположение значений в C.

Задайте 'stable' если вы хотите значения в C иметь тот же порядок как в A и B.

A = [5 7 1]; 
B = [3 1 1];
[C,ia,ib] = union(A,B,'stable')
C = 1×4

     5     7     1     3

ia = 3×1

     1
     2
     3

ib = 1

В качестве альтернативы можно задать 'sorted' порядок.

A = [5 7 1]; 
B = [3 1 1];
[C,ia,ib] = union(A,B,'sorted')
C = 1×4

     1     3     5     7

ia = 3×1

     3
     1
     2

ib = 1

Задайте два вектора, содержащие NaN.

A = [5 NaN 1]; 
B = [4 NaN NaN];

Найдите объединение векторов A и B.

C = union(A,B)
C = 1×6

     1     4     5   NaN   NaN   NaN

union обработки NaN значения как отличные.

Создайте массив ячеек из символьных векторов, A.

A = {'dog','cat','fish','horse'};

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

B = {'dog ','cat','fish ','horse'};

Объедините элементы A и B.

[C,ia,ib] = union(A,B)
C = 1x6 cell
    {'cat'}    {'dog'}    {'dog '}    {'fish'}    {'fish '}    {'horse'}

ia = 4×1

     2
     1
     3
     4

ib = 2×1

     1
     3

union конечный пробел обработок в массивах ячеек из символьных векторов как отличные символы.

Создайте символьный массив вектор-столбца.

A = ['A';'B';'C']
A = 3x1 char array
    'A'
    'B'
    'C'

class(A)
ans = 
'char'

Создайте вектор-строку, содержащий элементы числового типа double.

B = [68 69 70]
B = 1×3

    68    69    70

class(B)
ans = 
'double'

union из A и B возвращает символьный массив вектор-столбца.

C = union(A,B)
C = 6x1 char array
    'A'
    'B'
    'C'
    'D'
    'E'
    'F'

class(C)
ans = 
'char'

Создайте вектор символов, содержащий буквы a B, и c.

A = ['a';'b';'c'];
class(A)
ans = 
'char'

Создайте массив ячеек из символьных векторов, содержащий буквы cD, и e.

B = {'c','d','e'};
class(B)
ans = 
'cell'

Объедините элементы A и B.

C = union(A,B)
C = 5x1 cell
    {'a'}
    {'b'}
    {'c'}
    {'d'}
    {'e'}

Результат, C, массив ячеек из символьных векторов.

class(C)
ans = 
'cell'

Используйте 'legacy' отметьте, чтобы сохранить поведение union от R2012b и предшествующих релизов в вашем коде.

Найдите объединение A и B с текущим поведением.

A = [5 7 1]; 
B = [3 1 1];
[C1,ia1,ib1] = union(A,B)
C1 = 1×4

     1     3     5     7

ia1 = 3×1

     3
     1
     2

ib1 = 1

Найдите объединение A и B, и сохраните устаревшее поведение.

A = [5 7 1]; 
B = [3 1 1];
[C2,ia2,ib2] = union(A,B,'legacy')
C2 = 1×4

     1     3     5     7

ia2 = 1×2

     1     2

ib2 = 1×2

     3     1

Входные параметры

свернуть все

Входные массивы. Если вы задаете 'rows' опция, затем A и B должен иметь одинаковое число столбцов.

A и B должен иметь тот же класс за следующими исключениями:

  • logical'char', и все числовые классы могут объединиться с double массивы.

  • Массивы ячеек из символьных векторов могут объединиться с символьными массивами или строковыми массивами.

  • Категориальные массивы могут объединиться с символьными массивами, массивами ячеек из символьных векторов или строковыми массивами.

  • Массивы datetime могут объединиться с массивами ячеек векторов символов даты или одного векторов символов даты.

Существуют дополнительные требования для A и B на основе типа данных:

  • Если A и B оба порядковые категориальные массивы, у них должны быть те же наборы категорий, включая их порядок. Если никакой A ни B являются порядковыми, у них не должно быть тех же наборов категорий, и сравнение выполняется с помощью названий категории. В этом случае, категории C состойте из категорий A сопровождаемый категориями B это не находится в A. Категории находятся в том же порядке как в A и B, и порядок категории используется для сортировки C.

  • Если A и B таблицы или расписания, у них должны быть те же имена переменных (за исключением порядка). Для таблиц проигнорированы имена строки, так, чтобы две строки, которые имеют те же значения, но различные имена, были рассмотрены равными. Для расписаний учтены времена строки, так, чтобы две строки, которые имеют те же значения, но различные времена, не были рассмотрены равными.

  • Если A и B массивы datetime, они должны быть сопоставимы друг с другом в том, задают ли они часовой пояс.

A и B также могут быть объекты со следующими методами класса:

  • sort (или sortrows для 'rows' опция)

  • ne

Методы класса объекта должны быть сопоставимы друг с другом. Эти объекты включают разнородные массивы, выведенные из того же корневого класса. Например, A и B могут быть массивы указателей на графические объекты.

Закажите флаг в виде 'sorted' или 'stable', указывает на порядок значений (или строки) в C.

ФлагОписание
'sorted'

Значения (или строки) в C возвратитесь в отсортированном порядке, как возвращено sort.

Пример

C = union([5 5 3],[1 2 5],'sorted')
C =

     1     2     3     5

'stable'

Значения (или строки) в C возвратитесь в том же порядке, как они появляются в A, затем B.

Пример

C = union([5 5 3],[1 2 5],'stable')
C =

     5     3     1     2

Типы данных: char | string

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

свернуть все

Объединенные данные A и B, возвращенный как вектор, матрица, таблица или расписание. Если входные параметры A и B таблицы или расписания, затем порядок переменных в C совпадает с порядком переменных в A.

Следующее описывает форму C когда входные параметры являются векторами или матрицами и когда 'legacy' флаг не задан:

  • Если 'rows' флаг не задан, затем C вектор-столбец если оба A и B векторы-строки, в этом случае C вектор-строка. Например, union([],[1 2]) возвращает вектор-столбец.

  • Если 'rows' флаг задан, затем C матрица, содержащая объединенные строки A и B.

Класс входных параметров A и B определяет класс C:

  • Если класс A и B то же самое, затем C тот же класс.

  • Если вы комбинируете char или не удвойте числовой класс с double, затем C тот же класс как недвойной вход.

  • Если вы комбинируете logical класс с double, затем C double.

  • Если вы комбинируете массив ячеек из символьных векторов с char, затем C массив ячеек из символьных векторов.

  • Если вы комбинируете категориальный массив с вектором символов, массивом ячеек из символьных векторов или строкой, то C категориальный массив.

  • Если вы комбинируете массив datetime с массивом ячеек векторов символов даты или одного вектора символов даты, то C массив datetime.

  • Если вы комбинируете массив строк с вектором символов или массивом ячеек из символьных векторов, то C массив строк.

Индексируйте к A, возвращенный как вектор-столбец, когда 'legacy' флаг не задан. ia указывает на значения (или строки) в A это способствует объединению. Если значение (или строка) появляется многократно в A, затем ia содержит индекс к первому вхождению значения (или строка). Если значение появляется в обоих A и B, затем ia содержит индекс к первому вхождению в A.

Индексируйте к B, возвращенный как вектор-столбец, когда 'legacy' флаг не задан. ib указывает на значения (или строки) в B это способствует объединению. Если существует повторное значение (или строка) появляющийся исключительно в B, затем ib содержит индекс к первому вхождению значения. Если значение (или строка) появляется в обоих A и B, затем ib не содержит индекс к значению (или строка).

Советы

  • Чтобы найти объединение относительно подмножества переменных из таблицы или расписания, можно использовать индексирование столбца. Например, можно использовать объединение ((: Вар B: Вар )), где vars положительное целое число, вектор из положительных целых чисел, имени переменной, массива ячеек имен переменных или логического вектора. В качестве альтернативы можно использовать vartype создать индекс, который выбирает переменные заданного типа.

Расширенные возможности

Представлено до R2006a