クラス内のエイリアンをリストアップして、外れ値のスクリーニングを行いたいと考えています。
最初の試み:ローカルデータフィルター
ビッグクラスの宇宙人にはかなり衝撃を受けました!
...しかしその後、データ フィルターが無視されていることに気づきました (1 日目にはクラスにエイリアンがいなかったため)。
これに関係があるようですデータフィルター: 制限を指定する方法:
値がデータ フィルターでのみ使用され、データ テーブルでは使用されない場合、その値はデータ フィルターから削除されます。
この動作は、Jmp の別の動作を妨げます。最後のフィルタ値が選択解除されている場合、全て行が (何も選択されずに) 選択されます。
したがって、データ フィルターの現在の動作では、このアプローチは機能しません:(
次に、私が使用したのは、どこ()表形式レポートを制限する句。
残念ながら、ある日、クラスにエイリアンが存在しなくなった場合、Where 句はデータ セットを 0 行に制限する代わりに、エラー メッセージを生成します。
This Where-clause for data table 'Big Class' resulted in no rows: :alien == 1
さらに、レポートの行選択は静的であるように見えます。
XX が非エイリアンに変わった後も、彼は依然としてレポートに記載されています。

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
dt << New Column( "alien", nominal, set each value( 0 ) );
myDashboard = Function( {myTitle,withWhereClause},
New Window( myTitle,
Eval(
Substitute(
Expr(
Tabulate(
Show Control Panel( 0 ),
Add Table(
Row Table( Grouping Columns( :sex, :age, :name ) )
),
,
__selectAliens__
)
),
Expr( __selectAliens__ ),
If( withWhereClause,
Expr( Where( :alien == 1 ) ),
Expr(Local Data Filter( Close Outline( 1 ), Add Filter( columns( :alien ) ), Where( :alien == 1 )) )
)
)
)
)
);
myDashboard("select aliens via Data Filter", 0 ); // 1st approach: Data Filter --> so many alienas ?!?! no, Data filter was ignored
myDashboard("select aliens via Where()", 1 ); // Where CLause + no matching row --> error message instead of a report
dt << add rows( {name = "XX", alien = 1, sex = "M", age = 200} );
wait(2);
myDashboard("select aliens via Where()", 1 ); // Where CLause + matching row --> dashboard is created, but ...
// XX gets human -> Dashboard stays the same :(
dt[41, {"alien"}] = 0;