Main Content

このページの内容は最新ではありません。最新版の英語を参照するには、ここをクリックします。

union

2 つの配列の和集合

説明

C = union(A,B) は、AB を組み合わせて繰り返しを除いたデータを返します。C は、並べ替えられた順序になります。

  • AB が table または timetable の場合、union は、両方のテーブルの行セットの組み合わせを返します。timetable の場合、union は行時間を考慮して等価性を判別し、出力 timetable C を行時間で並べ替えます。

C = union(A,B,setOrder) は、特定の順序で C を返します。setOrder には 'sorted' または 'stable' を指定できます。

C = union(A,B,___,'rows')C = union(A,B,'rows',___) は、AB の各行を 1 つのエンティティとして扱い、AB を組み合わせて繰り返しを除いた行を返します。AB は必ず指定しなければなりません。setOrder はオプションで指定できます。

入力がいずれも categorical 配列または datetime 配列でない場合、'rows' オプションは cell 配列をサポートしません。

[C,ia,ib] = union(___) はまた、前述の任意の構文を使用してインデックス ベクトル ia および ib も返します。

  • 一般に、C の値は、A(ia)B(ib) の要素の組み合わせを並べ替えたものです。

  • 'rows' オプションを指定した場合、C の行は A(ia,:) の行と B(ib,:) の行の組み合わせを並べ替えたものになります。

  • AB が table または timetable の場合、CA(ia,:)B(ib,:) の行の組み合わせを並べ替えたものになります。

[C,ia,ib] = union(A,B,'legacy')[C,ia,ib] = union(A,B,'rows','legacy') は、R2012b およびそれ以前のリリースの関数 union の動作を保持します。

'legacy' オプションは categorical 配列、datetime 配列、duration 配列、table または timetable をサポートしません。

すべて折りたたむ

共通の値を 1 つもつ 2 つのベクトルを定義します。

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

ベクトル AB の和集合を求めます。

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

     1     3     5     7

共通の行をもつ 2 つのテーブルを定義します。

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

テーブル AB の和集合を求めます。

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

共通の値を 1 つもつ 2 つのベクトルを定義します。

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

ベクトル AB の和集合およびインデックス ベクトル iaib を求めます。

[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) を組み合わせた値です。

3 人の性別、年齢および身長のテーブル 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  

A と同じ変数をもつテーブル B を定義します。

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 

テーブル AB の和集合およびインデックス ベクトル iaib を求めます。

[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

MegBetty のデータは同じです。unionA からのインデックスだけを返します。このインデックスは Betty に対応しています。

共通の行をもつ 2 つの行列を定義します。

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

AB を組み合わせて繰り返しを除いた行およびインデックス ベクトル iaib を求めます。

[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 の値の順序を指定します。

C の値を A および B の値と同じ順序にする場合、'stable' を指定します。

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 を含む 2 つのベクトルを定義します。

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

ベクトル AB の和集合を求めます。

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

     1     4     5   NaN   NaN   NaN

unionNaN 値を個別のものとして処理します。

文字ベクトルの cell 配列 A を作成します。

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

文字ベクトルの cell 配列 B を作成します。一部のベクトルは末尾に空白文字があります。

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

AB の要素を組み合わせます。

[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 は、文字ベクトルの cell 配列内の末尾の空白文字を別個の文字として処理します。

列ベクトル文字配列を作成します。

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'

ABunion は列ベクトル文字配列を返します。

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

class(C)
ans = 
'char'

文字 abc を含む文字ベクトルを作成します。

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

文字 cde を含む文字ベクトルの cell 配列を作成します。

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

AB の要素を組み合わせます。

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

結果の C は、文字ベクトルの cell 配列になります。

class(C)
ans = 
'cell'

'legacy' フラグを使用して、コード内の R2012b およびそれ以前のリリースの union の動作を保持します。

現在の動作における AB の和集合を求めます。

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

AB の和集合を検出し、レガシ動作を維持します。

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' オプションを指定する場合、AB の列数は同じでなければなりません。

A および B は次の例外を伴う同一クラスのものでなければなりません。

  • logicalchar、およびすべての数値クラスは double 配列と組み合わせることができます。

  • 文字ベクトルの cell 配列は、文字配列または string 配列と組み合わせることができます。

  • categorical 配列は、文字配列、文字ベクトルの cell 配列または string 配列と組み合わせることができます。

  • datetime 配列は、日付文字ベクトルの cell 配列または単一の日付文字ベクトルと組み合わせることができます。

AB には、データ型に基づく追加の要件があります。

  • AB の両方が順序 categorical 配列である場合は、順序を含めて同じカテゴリ セットでなければなりません。AB の両方が順序配列でない場合、同じカテゴリ セットをもつ必要はなく、カテゴリ名を使用して比較が実行されます。この場合、C のカテゴリは、A のカテゴリの後に A にない B のカテゴリを並べて構成されます。カテゴリの順序は A および B と同じでなければならず、そのカテゴリの順序が C の並べ替えに使用されます。

  • AB が table または timetable の場合、その変数名は同じでなければなりません (順序は除く)。table の場合、行名は無視されるため、値が同じで名前が異なる 2 つの行は等しいと見なされます。timetable の場合、行時間が考慮されるため、値が同じで時間が異なる 2 つの行は、等しくないと見なされます。

  • AB が datetime 配列の場合、タイム ゾーンの指定が互いに一貫していなければなりません。

また、A および B は次のクラス メソッドをもつオブジェクトにすることもできます。

  • sort (または 'rows' オプションの sortrows)

  • 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 の値 (または行) は AB の順に、その中に出現するものと同じ順序で返されます。

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

     5     3     1     2

データ型: char | string

出力引数

すべて折りたたむ

AB を組み合わせたデータ。ベクトル、行列、table または timetable として返されます。入力 A および B が table または timetable の場合、C の変数の順番は、A の変数の順番と同じになります。

入力がベクトルまたは行列で、'legacy' フラグを指定していないときの C の形状を次に説明します。

  • 'rows' フラグを指定していない場合、C は列ベクトルです。例外として、AB の両方が行ベクトルの場合、C は行ベクトルになります。たとえば、union([],[1 2]) は列ベクトルを返します。

  • 'rows' フラグを指定した場合、C は、AB を組み合わせた行を含む行列です。

AB の入力のクラスによって、C のクラスが決まります。

  • AB のクラスが同じである場合、C は同じクラスになります。

  • char または非倍精度数値クラスを double と組み合わせる場合、C は非倍精度入力と同じクラスになります。

  • logical クラスを double と組み合わせる場合、Cdouble になります。

  • 文字ベクトルの cell 配列を char と組み合わせる場合、C は文字ベクトルの cell 配列になります。

  • categorical 配列を文字ベクトル、文字ベクトルの cell 配列または string と組み合わせる場合、C は categorical 配列になります。

  • datetime 配列を日付文字ベクトルの cell 配列または単一の日付文字ベクトルと組み合わせる場合、C は datetime 配列になります。

  • string 配列を文字ベクトルまたは文字ベクトルの cell 配列と組み合わせる場合、C は string 配列になります。

'legacy' フラグを指定していないときに列ベクトルとして返される A のインデックス。ia は、和集合に寄与する A 内の値 (または行) を示します。複数回出現する値 (または行)が A 内にある場合、ia はその値 (または行) の最初の出現位置に対するインデックスを含みます。値が AB の両方に出現する場合、ia には A で最初に出現する位置に対するインデックスが含まれます。

'legacy' フラグを指定していないときに列ベクトルとして返される B のインデックス。ib は、和集合に寄与する B 内の値 (または行) を示します。B 内だけに出現する繰り返しの値 (または行) がある場合、ib は値 (または行) の最初の出現位置に対するインデックスを含みます。値 (または行) が AB の両方に出現する場合、ib にはその値 (または行) のインデックスは含まれません。

ヒント

  • table または timetable の変数のサブセットに関する和集合を求めるために、列の添字を使用できます。たとえば、union(A(:,vars),B(:,vars)) を使用できます。ここで、vars は、正の整数、正の整数のベクトル、変数名、変数名の cell 配列または logical ベクトルです。あるいは vartype を使用して、指定したタイプの変数を選択する添字を作成することもできます。

拡張機能

スレッドベースの環境
MATLAB® の backgroundPool を使用してバックグラウンドでコードを実行するか、Parallel Computing Toolbox™ の ThreadPool を使用してコードを高速化します。

バージョン履歴

R2006a より前に導入