你好,
我在使用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)));
));