table の連結
説明
[table の連結] タスクでは、連結を実行、つまり table を横方向または縦方向に連結することによって対話的に 2 つの table を結合できます。このタスクは、ライブ スクリプト用の MATLAB® コードを自動生成します。
このタスクを使用すると、次を行うことができます。
"キー変数" を指定して、内部連結と外部連結を含む table の連結を実行する。このキー変数は table 変数であり、その一致する値 ("キー値") により出力 table に統合する行が判別されます。
同じ数の行または変数をもつ table をそれぞれ横方向または縦方向に連結する。
タスクを開く
MATLAB エディターで [table の連結] タスクをライブ スクリプトに追加するには、次を行います。
[ライブ エディター] タブで [タスク] 、 [table の連結] を選択します。
スクリプトのコード ブロック内に、
join
、table
、innerjoin
、outerjoin
などの関連キーワードを入力します。コマンドの補完候補からJoin Tables
を選択します。キーワードによっては、1 つ以上の対応するパラメーターがタスクで自動的に更新されます。
例
ライブ エディターのタスクを使用した table の連結
ライブ エディターの "table の連結" タスクを使用して、2 つの table の内部連結と外部連結を実行します。
最初に、多数の出荷に関する注文 ID、顧客名および注文日がある orders
table を読み込みます。
load orders
orders
orders=3×3 table
OrderID CustomerID OrderDate
_______ __________ ___________
5120 "Sanchez" 23-Apr-2019
1037 "Li" 18-Apr-2019
8937 "Johnson" 16-Apr-2019
次に、items
table を読み込みます。これには、顧客が注文した製品と、その品目の量、価格、出荷ステータスが含まれます。この table の各行には、orders
と同様に注文 ID があります。1 人の顧客が複数の品目を注文できるため、items
の複数の行が orders
の 1 つの注文を参照することがあります。
load items
items
items=5×5 table
OrderID Product Quantity Price Status
_______ ________________ ________ _____ _________
6005 "Dozen Roses" 1 39.99 Shipped
1037 "Petunia Basket" 1 23.99 Delivered
5120 "Tulips" 12 0.99 Pending
1037 "Gardenias" 1 17.99 Shipped
1037 "Gerber Daisies" 6 1.99 Delivered
table の連結タスクを開きます。タスクを開くには、キーワード「join
」をコード ブロックに入力し、メニューに表示された Join Tables
を選択します。
このタスクを使用して、orders
と items
の内部連結を実行します。タスクが開いたら、次を行います。
左と右の table として
orders
とitems
をそれぞれ選択します。両方の table のマージ変数として
OrderID
を選択します。[内部連結] ボタンをクリックします。
このタスクにより生成されるコードを確認するには、タスク パラメーター エリアの下部にある [コードの表示] をクリックしてタスクの表示を展開します。
joinedData=4×7 table
OrderID CustomerID OrderDate Product Quantity Price Status
_______ __________ ___________ ________________ ________ _____ _________
1037 "Li" 18-Apr-2019 "Petunia Basket" 1 23.99 Delivered
1037 "Li" 18-Apr-2019 "Gardenias" 1 17.99 Shipped
1037 "Li" 18-Apr-2019 "Gerber Daisies" 6 1.99 Delivered
5120 "Sanchez" 23-Apr-2019 "Tulips" 12 0.99 Pending
内部連結を実行すると、出力 table には、左右両方の table に出現するキー値のみが含まれます。
値
1037
と5120
のみが、両方の入力 table にあります。このため、出力 table にはそれら 2 つの注文のデータのみが含まれます。値
1037
は、items
では複数回 (品目ごとに 1 回) 出現しますが、orders
では 1 回のみ出現します。このため、1037
に対応するCustomerID
値とOrderDate
値が、出力に必要な回数だけコピーされます。
次に、このタスクを使用して左外部連結を実行します。外部連結は、一方の入力 table にのみ出現するキー値を含むことができます。たとえば、左外部連結には、右の table に対応する一致がない場合でも左の table のすべてのキー値が含まれます。右の table のキー値が左の table と一致しない場合、それらのキー値は含まれません。
[左外部連結] ボタンをクリックします。
[マージ変数の結合] チェック ボックスをオンにします。既定で、外部結合は左右の table のキー変数を出力 table の個別の変数にコピーします。キー変数をマージすると出力のキー変数が 1 つになります。
このタスクにより生成されるコードを確認するには、タスク パラメーター エリアの下部にある [コードの表示] をクリックしてタスクの表示を展開します。
joinedData2=5×7 table
OrderID CustomerID OrderDate Product Quantity Price Status
_______ __________ ___________ ________________ ________ _____ ___________
1037 "Li" 18-Apr-2019 "Petunia Basket" 1 23.99 Delivered
1037 "Li" 18-Apr-2019 "Gardenias" 1 17.99 Shipped
1037 "Li" 18-Apr-2019 "Gerber Daisies" 6 1.99 Delivered
5120 "Sanchez" 23-Apr-2019 "Tulips" 12 0.99 Pending
8937 "Johnson" 16-Apr-2019 <missing> NaN NaN <undefined>
これで、出力 table には注文 8937
のデータが含まれます。ただし、items
table には注文 8937
の品目がないため、行の残りは空の値 (<missing>
、NaN
、<undefined>
など) で埋められます。外部連結では、左右の table にキー値に関連付けられたデータがない場合、テーブル要素を空の値で埋めます。
完全な外部連結では、両方の table のキー値とデータがすべて含まれます。
左外部連結では、左の table のキー値とデータがすべて含まれますが、右の table については一致するキー値とそれに関連付けられたデータのみが含まれます。
右外部連結では、右の table のキー値とデータがすべて含まれますが、左の table については一致するキー値とそれに関連付けられたデータのみが含まれます。
関連する例
パラメーター
左のテーブル
— table または timetable の名前
ドロップダウン リストの項目
ワークスペースにあるすべての空でない table および timetable のリストから名前を指定します。
右のテーブル
— table または timetable の名前
ドロップダウン リストの項目
ワークスペースにあるすべての空でない table および timetable のリストから名前を指定します。
マージ変数
— キー値をもつ table 変数の名前
ドロップダウン リストの項目
左または右の table にある変数のリストから変数名を指定します。
左の table のドロップダウン リストには、変数の完全なリストがあります。
右の table のドロップダウン リストには、変数のサブセットがあります。右の table のマージ変数のリストは、左の table から選択されたマージ変数により制約されます。
マージ変数 (キー変数) を指定すると、その値により左右の table からマージされる行が決まります。マージ変数の複数のセットを指定するには、[+] ボタンを使用します。
マージ変数の結合
— 左右のマージ変数を結合するためのオプション
off
(既定値) | on
外部連結を実行するときに対応するマージ変数を結合します。既定で、外部連結は左右の table のキー変数を、出力 table の別々の変数にコピーします。左右の table の対応するキー変数を結合して出力の 1 つの変数にするには、このチェック ボックスをオンにします。
バージョン履歴
R2019b で導入R2023b: 行時間がキー値でない場合の、行時間による出力 timetable の並べ替え
ライブ エディターの [table の連結] タスクの左の入力が timetable の場合、行時間をキー値として指定していなくても、出力 timetable を行時間で並べ替えることができます。この場合、行時間で並べ替えるには、[結果を行時間で並べ替え] チェック ボックスをオンにします。
この並べ替えオプションは、以下の 3 つの条件がすべて満たされている場合にのみ使用できます。
左の入力が、行時間で並べ替えられた timetable である。
外部連結または内部連結を指定している。
行時間をキー値として指定していない。
行時間をキー値として指定している場合、出力 timetable は自動的に行時間で並べ替えられます。
R2022b: スコアリング アルゴリズムに基づいてタスクがマージ変数を自動的に選択
ライブ エディターの [table の連結] タスクは、行ラベルまたは変数名に基づいてマージ変数の最初のペアを自動的に選択できなかった場合、スコアリング アルゴリズムに基づいて選択しようとします。スコアリング アルゴリズムについては、Auto-Suggest: Learning-to-Recommend Data Preparation Steps Using Data Science Notebooks で説明されています。[table の連結] タスクは、次のステップを使用してマージ変数の候補ペアを選択し、テストします。
マージ変数の最初のペアとして、行名 (table 内) または行時間 (timetable 内) を選択します。
ステップ 1 が失敗した場合、厳密に一致する名前をもつ変数を最初のペアとして選択します。
ステップ 1 およびステップ 2 が失敗した場合、スコアリング アルゴリズムを使用して変数のペアをスコア付けします。スコアが最も高い変数のペアを、マージ変数の最初のペアとして選択します。
前のステップがすべて失敗した場合、[マージ変数] ドロップダウン リストの最初の項目を、マージ変数の最初のペアとして選択します。
以前のリリースでは、ステップ 3 で、名前の一部が最もよく一致する変数のペアがマージ変数の最初のペアとして選択されました。
R2022a: 入力に 100 万個を超える要素がある場合、ライブ エディター タスクは自動実行されない
入力に 100 万個を超える要素がある場合、このライブ エディター タスクは自動実行されません。以前のリリースでは、入力がどのようなサイズでもタスクは必ず自動実行されていました。入力の要素が多い場合、このタスクで生成されたコードは実行にかなりの時間 (数秒間以上) を要することがあります。
タスクが自動的に実行されない場合、自動実行インジケーターが無効になります。必要に応じてタスクを手動で実行するか、タスクの自動実行の有効化を選択することができます。
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- 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)