join
キー変数を使用した 2 つの table または timetable の組み合わせ
説明
は 2 つの入力の行をマージすることで table または timetable の T = join(Tleft,Tright)Tleft および Tright を連結します。関数 join は、Tleft の各行が Tright のちょうど 1 行に一致しなければならないシンプルな形式の連結操作を実行します。キー変数内の対応する値が同じである行が一致します。出力では、キー変数の値が一致している Tleft のすべての行を Tright の行に連結します。
たとえば、Tleft に Key1 と Var1 という名前の変数があり、Tright に変数 Key1 と Var2 がある場合、T=join(Tleft,Tright) は Key1 をキー変数として使用します。

既定では、キー変数は次のとおりです。
両方の入力が table であるか、
Tleftが timetable でTrightが table の場合は、TleftとTright内の同じ名前の変数。TleftとTrightがともに timetable である場合は、行時間のベクトル。
一致しているキー変数の値の順序は、左右の入力で同じである必要はありません。また、Tright のキー変数は、Tleft のキー変数のすべての値を含まなければなりません。各値は、Tright のキー変数に 1 回のみ出現しなければなりませんが、Tleft のキー変数には複数回出現してもかまいません。したがって、連結操作は、Tleft の複数の行に一致している Tright の行を複製します。
入力は、両方とも table、両方とも timetable、または table と timetable それぞれ 1 つずつにできます。
Tleftが table の場合、joinはTを table として返します。Tleftが timetable の場合、joinはTを timetable として返します。
は、1 つ以上の T = join(Tleft,Tright,Name,Value)Name,Value のペアの引数で指定された追加オプションを使用して、table または timetable を結合します。
たとえば、キー変数としてどの変数を使用するかを指定できます。
例
table Tleft を作成します。
Tleft = table({'Janice','Jonas','Javier','Jerry','Julie'}',[1;2;1;2;1],...
'VariableNames',{'Employee' 'Department'})Tleft=5×2 table
Employee Department
__________ __________
{'Janice'} 1
{'Jonas' } 2
{'Javier'} 1
{'Jerry' } 2
{'Julie' } 1
Tleft と 1 つの変数を共有する table Tright を作成します。
Tright = table([1 2]',{'Mary' 'Mona'}',...
'VariableNames',{'Department' 'Manager'})Tright=2×2 table
Department Manager
__________ ________
1 {'Mary'}
2 {'Mona'}
table Tleft と table Tright のデータを含む、新規 table T を作成します。関数 join を使用して、キー変数 Department に基づいて table Tright の Manager のデータを反復し、table Tleft のデータに追加します。
T = join(Tleft,Tright)
T=5×3 table
Employee Department Manager
__________ __________ ________
{'Janice'} 1 {'Mary'}
{'Jonas' } 2 {'Mona'}
{'Javier'} 1 {'Mary'}
{'Jerry' } 2 {'Mona'}
{'Julie' } 1 {'Mary'}
table Tleft を作成します。
Tleft = table([5;12;23;2;6],... {'cereal';'pizza';'salmon';'cookies';'pizza'},... 'VariableNames',{'Age','FavoriteFood'},... 'RowNames',{'Amy','Bobby','Holly','Harry','Sally'})
Tleft=5×2 table
Age FavoriteFood
___ ____________
Amy 5 {'cereal' }
Bobby 12 {'pizza' }
Holly 23 {'salmon' }
Harry 2 {'cookies'}
Sally 6 {'pizza' }
Tleft と 1 つの変数を共有する table Tright を作成します。
Tright = table({'cereal';'cookies';'pizza';'salmon';'cake'},...
[110;160;140;367;243],...
{'B';'D';'B-';'A';'C-'},...
'VariableNames',{'FavoriteFood','Calories','NutritionGrade'})Tright=5×3 table
FavoriteFood Calories NutritionGrade
____________ ________ ______________
{'cereal' } 110 {'B' }
{'cookies'} 160 {'D' }
{'pizza' } 140 {'B-'}
{'salmon' } 367 {'A' }
{'cake' } 243 {'C-'}
table Tleft および table Tright のデータを含む新規 table T を作成します。共通の変数 FavoriteFood がキー変数として関数 join によって使用されます。
T = join(Tleft,Tright)
T=5×4 table
Age FavoriteFood Calories NutritionGrade
___ ____________ ________ ______________
Amy 5 {'cereal' } 110 {'B' }
Bobby 12 {'pizza' } 140 {'B-'}
Holly 23 {'salmon' } 367 {'A' }
Harry 2 {'cookies'} 160 {'D' }
Sally 6 {'pizza' } 140 {'B-'}
table T には、'cake' に関する table Tright の最後の行の情報が含まれていません。これは、table Tleft に対応するエントリが存在しないためです。
table Tleft を作成します。
Tleft = table([10;4;2;3;7],[5;4;9;6;1],[10;3;8;8;4])
Tleft=5×3 table
Var1 Var2 Var3
____ ____ ____
10 5 10
4 4 3
2 9 8
3 6 8
7 1 4
table Tright の Var2 に table Tleft の Var2 と同じ内容を指定して、table Tright を作成します。
Tright = table([6;1;1;6;8],[5;4;9;6;1])
Tright=5×2 table
Var1 Var2
____ ____
6 5
1 4
1 9
6 6
8 1
table Tleft と table Tright のデータを含む、新規 table T を作成します。table Tleft および table Tright の Var2 を関数 join のキー変数として使用します。
T = join(Tleft,Tright,'Keys','Var2')
T=5×4 table
Var1_Tleft Var2 Var3 Var1_Tright
__________ ____ ____ ___________
10 5 10 6
4 4 3 1
2 9 8 1
3 6 8 6
7 1 4 8
join は、非キー変数 Var1 に一意の接尾辞を追加して、table Tleft と table Tright のデータを識別します。
table Tleft および table Tright のデータを含む新規 table を作成します。両方の table で非キー変数の名前が同じ場合、table Tleft のコピーだけを維持します。
table Tleft を作成します。
Tleft = table([10;4;2;3;7],[5;4;9;6;1])
Tleft=5×2 table
Var1 Var2
____ ____
10 5
4 4
2 9
3 6
7 1
table Tright の Var2 に table Tleft の Var2 と同じ内容を指定して、table Tright を作成します。
Tright = table([6;1;1;6;8],[5;4;9;6;1],[10;3;8;8;4])
Tright=5×3 table
Var1 Var2 Var3
____ ____ ____
6 5 10
1 4 3
1 9 8
6 6 8
8 1 4
table Tleft および table Tright のデータを含む新規 table T を作成します。Var2 を関数 join のキー変数として使用し、table Tleft の Var1 のコピーだけを維持します。出力 table T に、table Tright の Var1 データは含まれません。
T = join(Tleft,Tright,'Keys','Var2','KeepOneCopy','Var1')
T=5×3 table
Var1 Var2 Var3
____ ____ ____
10 5 10
4 4 3
2 9 8
3 6 8
7 1 4
table Tleft を作成します。
Tleft = table(['M';'M';'F';'F';'F'],[38;43;38;40;49],... 'VariableNames',{'Gender' 'Age'},... 'RowNames',{'Smith' 'Johnson' 'Williams' 'Jones' 'Brown'})
Tleft=5×2 table
Gender Age
______ ___
Smith M 38
Johnson M 43
Williams F 38
Jones F 40
Brown F 49
Tleft の行と Tright の行が 1 対 1 で対応するように、table Tright を作成します。
Tright = table([64;69;67;71;64],... [119;163;133;176;131],... [122 80; 109 77; 117 75; 124 93; 125 83],... 'VariableNames',{'Height' 'Weight' 'BloodPressure'},... 'RowNames',{'Brown' 'Johnson' 'Jones' 'Smith' 'Williams'})
Tright=5×3 table
Height Weight BloodPressure
______ ______ _____________
Brown 64 119 122 80
Johnson 69 163 109 77
Jones 67 133 117 75
Smith 71 176 124 93
Williams 64 131 125 83
table Tleft および table Tright のデータを含む新規 table T を作成します。行名のベクトルをキー変数として使用します (Tleft.Properties.DimensionNames{1} で示されるように、table の行名のベクトルの名前は 'Row' です)。
T = join(Tleft,Tright,'Keys','Row')
T=5×5 table
Gender Age Height Weight BloodPressure
______ ___ ______ ______ _____________
Smith M 38 71 176 124 93
Johnson M 43 69 163 109 77
Williams F 38 64 131 125 83
Jones F 40 67 133 117 75
Brown F 49 64 119 122 80
T の行は Tleft と同じ順序になります。
table Tleft を作成します。
Tleft = table([10;4;2;3;7],[5;4;9;6;1],[10;3;8;8;4])
Tleft=5×3 table
Var1 Var2 Var3
____ ____ ____
10 5 10
4 4 3
2 9 8
3 6 8
7 1 4
table Tright の Var2 に table Tleft の Var1 と同じ内容を異なる順序で指定して、table Tright を作成します。
Tright = table([6;1;1;6;8],[2;3;4;7;10])
Tright=5×2 table
Var1 Var2
____ ____
6 2
1 3
1 4
6 7
8 10
table Tleft と table Tright のデータを含む、新規 table T を作成します。テーブル Tleft の Var1 とテーブル Tright の Var2 を、関数 join のキー変数として使用します。
[T,iright] = join(Tleft,Tright,'LeftKeys',1,'RightKeys',2)
T=5×4 table
Var1_Tleft Var2 Var3 Var1_Tright
__________ ____ ____ ___________
10 5 10 8
4 4 3 1
2 9 8 6
3 6 8 1
7 1 4 6
iright = 5×1
5
3
1
2
4
T は、Tleft と Tright(iright,1) を水平に連結したものです。
同じ行時間と異なる変数をもつ 2 つの timetable を作成します。
Traffic = [0.8 0.9 0.1 0.7 0.9]'; Noise = [0 1 1.5 2 2.3]'; Tleft = timetable(hours(1:5)',Traffic,Noise)
Tleft=5×2 timetable
Time Traffic Noise
____ _______ _____
1 hr 0.8 0
2 hr 0.9 1
3 hr 0.1 1.5
4 hr 0.7 2
5 hr 0.9 2.3
Distance = [0.88 0.86 0.91 0.9 0.86]'; Tright = timetable(hours(1:5)',Distance)
Tright=5×1 timetable
Time Distance
____ ________
1 hr 0.88
2 hr 0.86
3 hr 0.91
4 hr 0.9
5 hr 0.86
timetable をマージします。join はキー変数として行時間を使用します。
T = join(Tleft,Tright)
T=5×3 timetable
Time Traffic Noise Distance
____ _______ _____ ________
1 hr 0.8 0 0.88
2 hr 0.9 1 0.86
3 hr 0.1 1.5 0.91
4 hr 0.7 2 0.9
5 hr 0.9 2.3 0.86
timetable と table を作成します。
Measurements = [0.13 0.22 0.31 0.42 0.53 0.57 0.67 0.81 0.90 1.00]'; Device = ['A';'B';'A';'B';'A';'B';'A';'B';'A';'B']; Tleft = timetable(seconds(1:10)',Measurements,Device)
Tleft=10×2 timetable
Time Measurements Device
______ ____________ ______
1 sec 0.13 A
2 sec 0.22 B
3 sec 0.31 A
4 sec 0.42 B
5 sec 0.53 A
6 sec 0.57 B
7 sec 0.67 A
8 sec 0.81 B
9 sec 0.9 A
10 sec 1 B
Device = ['A';'B']; Accuracy = [0.023;0.037]; Tright = table(Device,Accuracy)
Tright=2×2 table
Device Accuracy
______ ________
A 0.023
B 0.037
timetable と table をマージします。Tleft と Tright の両方に Device という名前の変数があるため、それがキー変数になります。T は timetable です。
T = join(Tleft,Tright)
T=10×3 timetable
Time Measurements Device Accuracy
______ ____________ ______ ________
1 sec 0.13 A 0.023
2 sec 0.22 B 0.037
3 sec 0.31 A 0.023
4 sec 0.42 B 0.037
5 sec 0.53 A 0.023
6 sec 0.57 B 0.037
7 sec 0.67 A 0.023
8 sec 0.81 B 0.037
9 sec 0.9 A 0.023
10 sec 1 B 0.037
入力引数
左のテーブル。table または timetable として指定します。すべてのキー変数について、Tleft の各行は、Tright の 1 行に正確に一致しなければなりません。
右のテーブル。table または timetable として指定します。すべてのキー変数について、Tright の各行は、Tleft の 1 行に正確に一致しなければなりません。
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN として指定します。ここで、Name は引数名で、Value は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、コンマを使用して名前と値をそれぞれ区切り、Name を引用符で囲みます。
例: 'Keys',2 は、Tleft の 2 番目の変数と Tright の 2 番目の変数をキー変数として使用します。
キーとして使用する変数。'Keys' と、正の整数、正の整数のベクトル、string 配列、文字ベクトル、文字ベクトルの cell 配列、pattern スカラー、または logical ベクトルのいずれかで構成される、コンマ区切りのペアとして指定します。
名前と値のペアの引数 'Keys' を名前と値のペアの引数 'LeftKeys' および 'RightKeys' と共に使用することはできません。
入力 table または timetable からの行ラベルのベクトルは、単独のキーまたは他のキー変数と組み合わせたキーにすることができます。行ラベルは、table の行名または timetable の行時間です。このベクトルをキーとして使用するには、(table の行名に対して) 'Row' として、行時間の timetable ベクトルの名前として、または の値として指定します。ここで T.Properties.DimensionNames{1} は table または timetable です。T
下位互換性のため、Tleft と Tright が行名をもつ table の場合、'Keys' の値を 'RowNames' として指定することもできます。しかし、ベスト プラクティスは 'Keys' の値を行名のベクトルの名前として指定することです。
例: 'Keys',[1 3] は、Tleft および Tright の最初の変数と 3 番目の変数をキー変数として使用します。
例: 'Keys',{'X','Y'} は、Tleft と Tright の X と Y という名前の変数をキー変数として使用します。
例: 'Keys','Row' は、Tleft と Tright の両方が行名をもつ table の場合、Tleft と Tright の行名のベクトルをキー変数として使用します。
Tleft でキーとして使用する変数。'LeftKeys' と、正の整数、正の整数のベクトル、string 配列、文字ベクトル、文字ベクトルの cell 配列、pattern スカラー、または logical ベクトルのいずれかで構成される、コンマ区切りのペアとして指定します。
名前と値のペアの引数 'LeftKeys' は名前と値のペアの引数 'RightKeys' と組み合わせて使用しなければなりません。'LeftKeys' および 'RightKeys' には、同じ数のキー変数を指定しなければなりません。join は、Tleft と Tright のキー値をその順序に基づいて組み合わせます。
入力 table または timetable からの行ラベルのベクトルは、単独のキーまたは他のキー変数と組み合わせたキーにすることができます。行ラベルは、table の行名または timetable の行時間です。このベクトルをキーとして使用するには、(table の行名に対して) 'Row' として、行時間の timetable ベクトルの名前として、または の値として指定します。ここで T.Properties.DimensionNames{1} は table または timetable です。T
例: 'LeftKeys',1 は、Tleft の最初の変数のみをキー変数として使用します。
Tright でキーとして使用する変数。'RightKeys' と、正の整数、正の整数のベクトル、string 配列、文字ベクトル、文字ベクトルの cell 配列、pattern スカラー、または logical ベクトルのいずれかで構成される、コンマ区切りのペアとして指定します。
名前と値のペアの引数 'RightKeys' は名前と値のペアの引数 'LeftKeys' と組み合わせて使用しなければなりません。'LeftKeys' および 'RightKeys' には、同じ数のキー変数を指定しなければなりません。join は、Tleft と Tright のキー値をその順序に基づいて組み合わせます。
入力 table または timetable からの行ラベルのベクトルは、単独のキーまたは他のキー変数と組み合わせたキーにすることができます。行ラベルは、table の行名または timetable の行時間です。このベクトルをキーとして使用するには、(table の行名に対して) 'Row' として、行時間の timetable ベクトルの名前として、または の値として指定します。ここで T.Properties.DimensionNames{1} は table または timetable です。T
例: 'RightKeys',3 は、Tright の 3 番目の変数のみをキー変数として使用します。
T に含める Tleft の変数。'LeftVariables' と、正の整数、正の整数のベクトル、string 配列、文字ベクトル、文字ベクトルの cell 配列、pattern スカラー、または logical ベクトルのいずれかで構成される、コンマ区切りのペアとして指定します。
'LeftVariables' を使用すると、T にキー変数および非キー変数を含めたり、除外したりできます。ただし、Tleft の行名または行時間は変数ではないため、含めることはできません。
既定で、join には Tleft のすべての変数が含まれます。
T に含める Tright の変数。'RightVariables' と、正の整数、正の整数のベクトル、string 配列、文字ベクトル、文字ベクトルの cell 配列、pattern スカラー、または logical ベクトルのいずれかで構成される、コンマ区切りのペアとして指定します。
'RightVariables' を使用すると、T にキー変数および非キー変数を含めたり、除外したりできます。ただし、Tright の行名または行時間は変数ではないため、含めることはできません。
既定で、join は、キー変数以外の Tright のすべての変数を含めます。
join が Tleft からのコピーのみを保持する変数。'KeepOneCopy' と、変数名を指定する string 配列、文字ベクトル、文字ベクトルの cell 配列、または pattern スカラーで構成される、コンマ区切りのペアとして指定します。
キー変数は T に 1 回出現しますが、同じ名前をもつ非キー変数が Tleft と Tright に出現する場合、join は既定で T に両方のコピーを保持します。Tleft からのコピーのみを保持するには、'KeepOneCopy' の名前と値のペアを使用します。
例: 'KeepOneCopy',Var2 は、Tleft からの非キー変数 Var2 のコピーのみを保持します。
出力引数
Tleft および Tright からのマージされたデータ。table または timetable として返されます。テーブル T には、Tleft の各行に対応する 1 行が同じ順序で出現します。
join は、Tleft(:,LeftVars) と Tright(iright,RightVars) を水平方向に連結して T を作成します。既定で、LeftVars は Tleft のすべての変数で、RightVars は Tright のすべての非キー変数です。そうでない場合、LeftVars は名前と値のペアの引数 'LeftVariables' で指定された変数で構成され、RightVars は名前と値のペアの引数 'RightVariables' で指定された変数で構成されます。
Tleft と Tright に同じ名前の非キー変数が含まれているとき、'KeepOneCopy' の名前と値のペアの引数が指定されている場合を除き、join は T の対応する変数名に一意の接尾辞を追加します。
Tleft が table の場合、T も table です。Tleft が timetable で Tright が timetable または table のいずれかの場合、T は timetable です。
T には、説明、変数単位、変数名、行名などの追加のメタデータを格納できます。詳細については、table または timetable のプロパティの節を参照してください。
Tright のインデックス。列ベクトルとして返されます。iright の各要素は、出力 table または出力 timetable である T の行に対応する Tright の行を示します。
詳細
アルゴリズム
関数 join は最初に 1 つ以上のキー変数を検索します。次に、join はそのキー変数を使用して、入力 table Tleft の各行に一致する入力 table Tright の行を検索し、これらの行を結合して、出力 table T の行を作成します。
TleftとTrightのキー値が 1 対 1 でマッピングされている場合、joinはTrightのデータを並べ替えて、テーブルTleftに追加します。TleftとTrightのキー値が多対 1 でマッピングされている場合、joinはTrightのデータの並べ替えと反復を行ってから、テーブルTleftに追加します。Tleftのキー値にマッピングされないキー変数のデータがTright内に存在する場合、joinは出力テーブルTにそのデータを含めません。
拡張機能
join 関数は tall 配列をサポートしていますが、以下の使用上の注意および制限があります。
tall timetable と tall table を結合するには、timetable が
joinへの最初の入力でなければなりません。
詳細については、tall 配列を参照してください。
使用上の注意および制限:
通常、入力 table に同じ名前の非キー変数を含めることはできません。ただし、名前と値の引数を指定すると、入力 table のサブセットを連結できます。
'KeepOneCopy'。ここで左の入力 table のみから取り出す変数をリストします。'LeftVariables'および'RightVariables'。ここで左の入力 table または右の入力 table のどちらか一方のみから取り出す変数をリストします。
以下の名前と値の引数の値は定数でなければなりません。
'Keys''LeftKeys''RightKeys''LeftVariables''RightVariables''KeepOneCopy'
以下の名前と値の引数の値は、パターン式をサポートしません。
'Keys''LeftKeys''RightKeys''LeftVariables''RightVariables''KeepOneCopy'
入れ子の table および timetable はサポートされていません。
この関数はスレッドベースの環境を完全にサポートしています。詳細については、スレッドベースの環境での MATLAB 関数の実行を参照してください。
バージョン履歴
R2013b で導入
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Web サイトの選択
Web サイトを選択すると、翻訳されたコンテンツにアクセスし、地域のイベントやサービスを確認できます。現在の位置情報に基づき、次のサイトの選択を推奨します:
また、以下のリストから Web サイトを選択することもできます。
最適なサイトパフォーマンスの取得方法
中国のサイト (中国語または英語) を選択することで、最適なサイトパフォーマンスが得られます。その他の国の MathWorks のサイトは、お客様の地域からのアクセスが最適化されていません。
南北アメリカ
- América Latina (Español)
- Canada (English)
- United States (English)
ヨーロッパ
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)