union - Union of two sets of data - MATLAB (original) (raw)

Union of two sets of data

Syntax

Description

[C](#btcme1c-1-C) = union([A,B](#btcme1c-1%5Fsep%5Fshared-AB)) returns the combined data from A and B with no repetitions. C is in sorted order.

example

[C](#btcme1c-1-C) = union([A,B](#btcme1c-1%5Fsep%5Fshared-AB),[setOrder](#btcme1c-1-setOrder)) returns C in a specific order. setOrder can be 'sorted' or 'stable'.

example

[C](#btcme1c-1-C) = union([A,B](#btcme1c-1%5Fsep%5Fshared-AB),___,'rows') and`C` = union(`A,B`,'rows',___) treat each row of A and each row of B as single entities and return the combined rows from A andB, with no repetitions. You must specifyA and B and optionally can specifysetOrder.

The 'rows' option does not support cell arrays, unless one of the inputs is either a categorical array or a datetime array.

[[C](#btcme1c-1-C),[ia](#btcme1c-1-ia),[ib](#btcme1c-1-ib)] = union(___) also returns index vectors ia and ib using any of the previous syntaxes.

example

[[C](#btcme1c-1-C),[ia](#btcme1c-1-ia),[ib](#btcme1c-1-ib)] = union([A,B](#btcme1c-1%5Fsep%5Fshared-AB),'legacy') and[`C`,`ia`,`ib`] = union(`A,B`,'rows','legacy') preserve the behavior of the union function from R2012b and prior releases.

The 'legacy' option does not support categorical arrays, datetime arrays, duration arrays, tables, or timetables.

example

Examples

collapse all

Define two vectors with a value in common.

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

Find the union of vectors A and B.

Define two tables with rows in common.

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

Find the union of tables A and 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

Define two vectors with a value in common.

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

Find the union of vectors A and B, as well as the index vectors, ia and ib.

The values in C are the combined values of A(ia) and B(ib).

Define a table, A, of gender, age, and height for three people.

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  

Define a table, B with the same variables as 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 

Find the union of tables A and B, as well as the index vectors, ia and ib.

C=4×3 table Gender Age Height ______ ___ ______

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

The data for Meg and Betty are the same. union only returns the index from A, which corresponds to Betty.

Define two matrices with a row in common.

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

Find the combined rows of A and B, with no repetition, as well as the index vectors ia and ib.

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

C = 3×3

 0     0     1
 1     2     3
 2     2     2

The rows of C are the combined rows of A(ia,:) and B(ib,:).

Use the setOrder argument to specify the ordering of the values in C.

Specify 'stable' if you want the values in C to have the same order as in A and B.

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

Alternatively, you can specify 'sorted' order.

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

Define two vectors containing NaN.

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

Find the union of vectors A and B.

C = 1×6

 1     4     5   NaN   NaN   NaN

union treats NaN values as distinct.

Create a cell array of character vectors, A.

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

Create a cell array of character vectors, B, where some of the vectors have trailing white space.

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

Combine the elements of A and B.

C = 1×6 cell {'cat'} {'dog'} {'dog '} {'fish'} {'fish '} {'horse'}

union treats trailing white space in cell arrays of character vectors as distinct characters.

Create a column vector character array.

A = 3×1 char array 'A' 'B' 'C'

Create a row vector containing elements of numeric type double.

The union of A and B returns a column vector character array.

C = 6×1 char array 'A' 'B' 'C' 'D' 'E' 'F'

Create a character vector containing the letters a , b, and c.

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

Create a cell array of character vectors containing the letters c, d, and e.

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

Combine the elements of A and B.

C = 5×1 cell {'a'} {'b'} {'c'} {'d'} {'e'}

The result, C, is a cell array of character vectors.

Use the 'legacy' flag to preserve the behavior of union from R2012b and prior releases in your code.

Find the union of A and B with the current behavior.

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

Find the union of A and B, and preserve the legacy behavior.

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

Input Arguments

collapse all

Order flag, specified as 'sorted' or'stable', indicates the order of the values (or rows) in C.

Flag Description
'sorted' The values (or rows) in C return in sorted order as returned by sort.ExampleC = union([5 5 3],[1 2 5],'sorted')C = 1 2 3 5
'stable' The values (or rows) in C return in the same order as they appear inA, thenB.ExampleC = union([5 5 3],[1 2 5],'stable')C = 5 3 1 2

Data Types: char | string

Output Arguments

collapse all

Combined data of A and B, returned as a vector, matrix, table, or timetable. If the inputs A and B are tables or timetables, then the order of the variables in C is the same as the order of the variables in A.

The following describes the shape of C when the inputs are vectors or matrices and when the 'legacy' flag is not specified:

The class of the inputs A and B determines the class of C:

Index to A, returned as a column vector when the'legacy' flag is not specified. ia indicates the values (or rows) in A that contribute to the union. If a value (or row) appears multiple times inA, then ia contains the index to the first occurrence of the value (or row). If a value appears in bothA and B, thenia contains the index to the first occurrence inA.

Index to B, returned as a column vector when the'legacy' flag is not specified. ib indicates the values (or rows) in B that contribute to the union. If there is a repeated value (or row) appearing exclusively inB, then ib contains the index to the first occurrence of the value. If a value (or row) appears in bothA and B, thenib does not contain an index to the value (or row).

Tips

Extended Capabilities

expand all

Theunion function supports tall arrays with the following usage notes and limitations:

For more information, see Tall Arrays.

Usage notes and limitations:

The union function supports GPU array input with these usage notes and limitations:

For more information, see Run MATLAB Functions on a GPU (Parallel Computing Toolbox).

Usage notes and limitations:

For more information, see Run MATLAB Functions with Distributed Arrays (Parallel Computing Toolbox).

Version History

Introduced before R2006a