我想通过列出班上的外星人来进行一些异常值筛选。
第一次尝试:本地数据过滤器
我对大班里的所有外星人感到非常震惊!
...但后来我注意到数据过滤器被忽略了(因为在第一天,班上没有外星人)。
这似乎与数据过滤器:如何指定限制:
如果某个值仅在数据过滤器中使用,但未在数据表中使用,则会从数据过滤器中删除该值。
此行为会干扰 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;