数千の ID を持つ別のデータセットを使用してデータセットをフィルタリングする方法 (サブクエリ、スクリプト)数百万行を含む「大きな」データセットがあります。 各行には特定の IDENT フィールドがあります。 IDENT は複数回発生する可能性があります。 もう 1 つ小さいデータセット「SMALL」があり、これにはわずか数百行が含まれています。 各行には特定の IDENT フィールドもあります。
ここで、SMALL で同じ IDENT を持つ BIG のすべての行を保持したいだけです。 言い換えれば、IDENT フィールドを使用して SMALL から BIG をフィルタリングする方法です。 SAS SQL を使用すると、それは簡単です。例:
プロシージャSQL ;
CREATE テーブル FILTERED
BIG から * を選択として
ここで IDENT は (SMALL から IDENT を選択します) ;
やめる ;
JMP でこのようなことはできますか?
敬具
初心者
Re: 数千の ID を持つ別のデータセットを使用してデータセットをフィルタリングする方法 (サブクエリ、スクリプト)JSL スクリプトでは次のようになります。
data table ("Big") << join (with(data table("Small")),
by matching columns (::ID=:ID),
drop mutiples (0,0),
include nonmatches(0,0),
preserve main table order(1)) ;
小さなタイプミスがある可能性があることに注意してください...
Re: 数千の ID を持つ別のデータセットを使用してデータセットをフィルタリングする方法 (サブクエリ、スクリプト)結合を対話的に実行する場合は、作成したばかりのデータ テーブルに移動し、データ テーブルの左端にあるテーブル パネルの緑色の三角形の横にある「ソース」項目を右クリックして、「」を選択します。編集"。結合されたデータ テーブルの作成に使用された JSL が表示されます。
Re: 数千の ID を持つ別のデータセットを使用してデータセットをフィルタリングする方法 (サブクエリ、スクリプト)あなたの努力には感謝しますが、私は対話型の説明ではなく、スクリプトによる回答に興味がありました。
Re: 数千の ID を持つ別のデータセットを使用してデータセットをフィルタリングする方法 (サブクエリ、スクリプト)Newbie2Jumpie 様
これはいくつかの方法で可能です。 新しいテーブルを作成したいのか、単にフィルタリングしたいのかによって異なります。 新しいテーブルの作成から始めましょう (十分な RAM があるかどうかを確認してください)。
- JMP で両方のテーブルを開きます
- テーブルメニューには「結合」があり、必要に応じてデータベースを結合することができます。たとえば、次のようになります。

3. [OK] を押すと、短縮された新しいテーブルが表示され、他の 2 つのテーブルを閉じることができます。
[テーブル] -> [JMP クエリ ビルダー] メニューでも同様のことを実現できますが、データベース クエリ ビルダーと同様にさらに多くのオプションがあり、ソース スクリプトのほかに更新スクリプトや、クエリのオプションを変更するために使用できるその他のオプションも利用できます。 (これを説明するための例を添付しました (Big Class.jmp、ID_Table.jmp、SQLQuery1.jmp)
もう 1 つのオプションでは、リンク/参照テーブル (別名仮想結合) を使用して、その場でフィルタリングできます。 参照されるテーブルには、大きなテーブルの ID と同じ名前の列と、小さなテーブルの ID 列と同じ内容の別の列が必要です (つまり、実際には同じ ID 列が 2 つありますが、名前が異なるだけです) 。 (2 番目の例をご覧ください。 小さなテーブルでは、大きなテーブルと同じ名前の ID 列をリンク ID として指定します (列とリンク ID を右クリックします)。 大きなテーブルで ID 列を右クリックし、リンク参照を選択し、参照として小さなテーブルを選択します。 小さなテーブルのすべての列が、大きなテーブルでも非表示の列として視覚化されるようになりました。 これで、小さなテーブルと同様にエントリのみを含むこの 2 番目の ID 列をフィルター処理できるようになります。 これにより、他のすべての行が除外されるため、関心のある行だけが考慮されますが、別のテーブルにリストされます。