こんにちは、みんな、
私は、いくつかの基準に基づいてデータテーブルからサブセットを選択するスクリプトを作成しています。
例:dtは、Error_ID列を持つ私のデータテーブルです。
私は次のように入力しました: "dt_subset=dt< ここで、dtデータテーブルにError_ID==0の行がないと仮定すると、dt_subsetは空になります。
dt_subset は、テーブル dt と同じ列を持ち、行数が 0 の新しいデータ テーブルであると予想していました。そのため、もし私が「If( !Empty(dt_subset)...)」かどうかをチェックすると false が返され、空の dt_subset テーブルに対して処理を続行しないはずです。
代わりに、dt_subsetが空かどうかをチェックしようとするとエラーが発生します。
基本的に私がやりたいことは、選択範囲が空かどうかをチェックすることです。何か解決策はありますか?
助けてくれてありがとう!
行が選択されているかどうかだけを確認したい場合は、 << 選択された行を取得 を使用できます。
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
dt << Select Where(:age >= 20);
selrows = dt << Get Selected Rows;
If(N Items(selrows) == 0,
Throw("No rows selected");
);
このようなフィルターを適用した後でも空のテーブルが必要な場合は、通常次のような処理を行います。
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
rows_of_interest = dt << Get Rows Where(:age >= 20);
If(N Items(rows_of_interest) > 0,
dt_subset = dt << Subset(Rows(rows_of_interest), Selected Columns(0), Output table("SUBSET"));
,
dt_subset = dt << Subset(Rows(1), Selected Columns(0), Output table("SUBSET"));
dt_subset << Delete Rows(1);
);
Show(N Rows(dt_subset)); // demo purposes
作成されていないテーブルから確認したい場合は
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
dt_subset = dt << Select Where(:age >= 20) << Subset(Selected Rows(1), Selected Columns(0), Output table("SUBSET"));
If(Is Empty(dt_subset),
Throw("No rows selected");
);
Write();