我想通過列出班上的外星人來進行一些異常值篩選。
第一次嘗試:本地數據過濾器
我對大班裡的所有外星人感到非常震驚!
...但後來我注意到數據過濾器被忽略了(因為在第一天,班上沒有外星人)。
這似乎與數據過濾器:如何指定限制:
如果某個值僅在數據過濾器中使用,但未在數據表中使用,則會從數據過濾器中刪除該值。
此行為會干擾 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;