你好,
我在使用JSL中的本地数据过滤器时遇到了两个问题。我使用的是JMP 17。
我正在设计一个脚本,其中会提示用户从一个列表中进行选择,该列表会传递给图表构建器对象中的本地数据筛选器。这部分没问题,但是图表打开后,我想将本地数据筛选器保存到主数据表中。手动操作时,JMP 日志没有记录这一步骤,所以我不知道应该如何编写脚本来实现。我阅读了关于“复制本地数据筛选器()”和“粘贴本地数据筛选器()”函数的脚本索引,但那并不是我想要的。所以我的第一个问题是:如何将报表窗口中的本地数据筛选器脚本保存到主数据表中?
我的第二个问题是如何重用这个筛选器。我还有另一个脚本,它会生成不同的报表,但会使用相同的本地数据筛选器。我尝试在已保存的本地数据筛选器脚本中使用 Get Table Property() 函数,但似乎无法正确应用于新的报表窗口。
我知道将两个脚本合并成一个大脚本可以解决我的问题,但我为了简化用户体验而将它们分开了。这并非最佳方案,但我认为我的想法可行,而且是我自己想出来的。如果有人能帮我解决这些问题,我将不胜感激。
亲切的问候,
卡塔尔
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Car Poll.jmp" );
// First graph
obj1 = dt << Distribution(
Nominal Distribution( Column( :country ) ),
Local Data Filter(
Add Filter( columns( :sex ), Where( :sex == "Female" ) ),
Mode( Show( 1 ), Include( 1 ) )
)
);
// How to save "Local Data Filter" to data table?
// Manually add filter
dt << New Script( "Local Data Filter",
Local Data Filter( Add Filter( columns( :sex ), Where( :sex == "Female" ) ) )
);
// Second graph
obj2 = dt << Distribution(
Stack( 1 ),
Nominal Distribution(
Column( :marital status ),
Horizontal Layout( 1 ),
Vertical( 0 )
),
);
// Get local data filter
filter = dt << Get Table Property( "Local Data Filter" );<BR /><BR />// How to apply filter to obj2?
单程
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Car Poll.jmp" );
// First graph
obj1 = dt << Distribution(
Nominal Distribution( Column( :country ) )
);
ldf = obj1 << Local Data Filter(
Add Filter( columns( :sex ), Where( :sex == "Female" ) ),
Mode( Show( 1 ), Include( 1 ) )
);
ldf << Save Script to Data Table("Local Data Filter");
obj2 = dt << Distribution(
Stack( 1 ),
Nominal Distribution(
Column( :marital status ),
Horizontal Layout( 1 ),
Vertical( 0 )
),
);
ldf_script = dt << Get Script("Local Data Filter");
Eval(EvalExpr(
Send(obj2, Expr(Name Expr(ldf_script)));
));