仮想結合はメインデータテーブルと1つまたは複数の補助データテーブルとをリンクします。この機能を使用すると、実際にテーブルを結合しなくても、メインデータテーブルが補助データテーブルのデータにアクセスできるようになります。『JMPの使用法』のデータテーブルの仮想結合を参照してください。
次の例は、データテーブルを縦方向に結合し、そのデータで一変量の分布を実行する方法を示しています。
dt1 = Open( "$SAMPLE_DATA/Pizza Profiles.jmp" );
dt1:ID << Set Property( "Link ID", 1 );// リンクIDを追加し、それをオンにする
dt2 = Open( "$SAMPLE_DATA/Pizza Responses.jmp" );
// リンク参照を「選択肢1」、「選択肢2」、および「選択」列に追加する
dt2:選択肢1 << Set Property( "リンク参照", Reference Table( "$SAMPLE_DATA/Pizza Profiles.jmp" ) );
dt2:選択肢2 << Set Property( "リンク参照", Reference Table( "$SAMPLE_DATA/Pizza Profiles.jmp" ) );
dt2:選択 << Set Property( "リンク参照", Reference Table( "$SAMPLE_DATA/Pizza Profiles.jmp" ) );
obj = dt2 << Distribution( // 生地[選択肢1]の分布を作成する
Weight( :被験者 ),
Nominal Distribution(
Column(
Referenced Column(
"生地[選択肢1]", // 結合された列の名前を特定する
Reference( Column( :選択肢1 ), Reference( Column( :生地 ) ) )
)
)
),
Nominal Distribution( Column( :選択肢1 ) )
);
仮想結合の他の例については、[ヘルプ]>[スクリプトの索引を開く]で「仮想結合」を検索してください。
データテーブルの列パネルには、リンクされた列の名前が表示されます。たとえば、「Movie Inventory.jmp」と「Movie Rentals.jmp」サンプルデータテーブルを開くと、図9.12のようにリンクされた列が表示されます。
列名の後ろに、括弧で囲まれた参照列の名前が付いています。たとえば、図9.12ではタイトルの列名の後ろに参照列[商品番号]が続いています。
図9.12 「Movie Rentals.jmp」のリンクされた列
仮想結合でリンクした列の名前は、Set Titleを使って変更できます。たとえば、以下のスクリプトは、「一変量の分布」レポートで、仮想結合された列の名前レーティング[商品番号]を映画の評価に変更しています。
dt1 = Open( "$SAMPLE_DATA/Movie Inventory.jmp" );
dt2 = Open( "$SAMPLE_DATA/Movie Rentals.jmp" );
dt2 << Distribution(
Nominal Distribution(
Column(
Referenced Column( // 結合された列の名前を指定する
"レーティング[商品番号]",
Reference( Column( :商品番号 ), Reference( Column( :レーティング ) ) )
)
)
),
SendToReport( Dispatch( {}, "レーティング[商品番号]", OutlineBox,
{Set Title( "映画の評価" )} ) ) /* 仮想結合でリンクした列の名前を変更する */
);
スクリプトを実行すると、他のプラットフォームのスクリプトを実行するときと同様に、参照しているテーブルが開けられる前に自動的に参照される側のテーブル(リンクIDプロパティを持つもの)が開きます。
リンクされた列に、参照されている列の名前を付けるかどうかを指定することもできます。このオプションで、より短い列の名前を定義することができます(たとえば、"レーティング[商品番号]"の代わりに、"レーティング")。これにはUse Linked Column Nameオプションを指定してください。
dt1 = Open( "$SAMPLE_DATA/Movie Inventory.jmp" );
dt2 = Open( "$SAMPLE_DATA/Movie Rentals.jmp" );
Column( dt2, "商品番号" ) << Set Property(
"リンク参照",
{Reference Table( "Movie Inventory.jmp" ), Options( "参照先の列名をそのまま使用"( 1 ) )}
);
dt2 << Distribution(
Nominal Distribution(
Column(
Referenced Column( // 結合された列の名前を指定する
"レーティング",
Reference( Column( :商品番号 ), Reference( Column( :レーティング ) ) )
)
)
)
);
仮想結合したデータテーブルのデータを別のユーザと共有したい場合は、データをマージしてデータテーブルを永久に結合した方がよいかもしれません。この方法を使えば、メインと補助という2つのデータテーブルではなく、1つのデータテーブルが作成されるため便利です。
参照データをマージすると、補助データテーブルから主データテーブルにデータがコピーされます。その後、主データテーブルを保存すると、コピーされたデータも保存されます。
以下の例は、2つの参照列をマージする方法を示します。
t1 = Open( "$SAMPLE_DATA/Pizza Profiles.jmp" );
dt2 = Open( "$SAMPLE_DATA/Pizza Responses.jmp" );
dt1:ID << Set Property( "リンクID", 1 );
dt2:Choice << Set Property( "Link Reference", Reference Table( dt1 ) );
dt2:Choice1 << Set Property( "Link Reference", Reference Table( dt1 ) );
dt2:Choice2 << Set Property( "Link Reference", Reference Table( dt1 ) );
// マージする列を選択する
dt2 << Select Columns( :選択肢1, :選択肢2 );
dt2 << Merge Referenced Data();
/* 参照列によりリンクされたデータは、Pizza Responses.jmpに組み込まれました */
注: マージする列を選択しなかった場合、すべての列がマージされます。