腳本:帶有組合框過濾器的數據表子集你好,
我一直在嘗試編寫一個腳本來創建較大數據表的子集。 新的子集應包含受試者 ID 號、出生日期和選定日期範圍。 我編寫了一個腳本,要求在三個不同的文本框中輸入 ID#、開始日期和結束日期。 (包括在下面,它遠非完美)。 但是,我希望彈出窗口中有一些下拉菜單,以顯示當前數據表可用的 ID#,以及該主題的隨附日期。 按照這裡的示例, http://www.jmp.com/support/notes/54/614.html ,我嘗試過使用組合框,但似乎無法正確操作。
問題歸根結底是使第二個/第三個下拉菜單對 ID# 選擇做出相應的反應。 我注意到的事情:匯總和關聯數組有助於減少重複日期和空格,並且日期不在首選的“m/d/y”中。
任何幫助表示讚賞!
dt = Current Data Table();
Column(dt, "Coll Date") << Data Type("Numeric", Informat("m/d/y"), Format("m/d/y") );
Column(dt, "Coll Date") << Modeling Type("Continuous");
Column(dt, "Coll Date") << Order(Ascending);
nw = New Window( "Subject ID by Date Range.",
<<MODAL>= Char( startDate ) & Format( :Coll Date, "m/d/y" ) <= Char( endDate )
);
subdt = dt << Subset(
Columns( :Patient ID1, :DOB, :Coll Date ),
Output Table Name( "subset" ),
);
subdt<< sort(by(:Coll Date), Replace Table);</MODAL>A
回复:腳本:帶有組合框過濾器的數據表子集如何編寫顯示子集表部分的腳本?
回复:腳本:帶有組合框過濾器的數據表子集選擇設備、選擇列表與滑塊取決於列的建模類型。如果您只是將建模類型更改為“Ordinal”,它將使選擇成為一個選擇列表。
dt=open("$SAMPLE_DATA\Movies.jmp");
dt:year << set modeling type(ordinal);
Current Data Table() << Data Filter(
Location( {37, 37} ),
Add Filter(
columns( :Type, :Year ),
Display( :Type, Size( 160, 90 ), List Display ),
Display( Size( 394, 16 ), :Year )
)
);
或者,您可以將“年份”列轉換為實際的 JMP 日期值,並在該列上放置日期格式,您將看到代碼的更好的滑塊版本
dt=open("$SAMPLE_DATA\Movies.jmp");
for each row(
dt:year= date mdy(1,1,year));
dt:year << format("m/d/y");
Current Data Table() << Data Filter(
Location( {37, 37} ),
Add Filter(
columns( :Type, :Year ),
Display( :Type, Size( 160, 90 ), List Display ),
Display( Size( 394, 16 ), :Year )
)
);回复:腳本:帶有組合框過濾器的數據表子集哇哦,簡單多了!
根據示例數據,選擇電影類型非常棒,是否有可能在“年份”列中獲得類似的內容。 也許格式化類型以獲得離散值,而不是精確到小數點後第三位的年份?
回复:腳本:帶有組合框過濾器的數據表子集您當然可以根據您指定的要求創建自己獨特的對話框,但是執行您想要的操作的簡單方法是編寫數據過濾器腳本,然後使用內置選擇功能,用戶可以簡單地轉到紅色三角形並選擇“顯示子集”,您所寫的數據表將被創建
dt=open("$SAMPLE_DATA\Movies.jmp");
Current Data Table() << Data Filter(
Location( {37, 37} ),
Add Filter(
columns( :Type, :Year ),
Display( :Type, Size( 160, 90 ), List Display ),
Display( Size( 394, 16 ), :Year )
)
);
回复:腳本:帶有組合框過濾器的數據表子集這就是我使用組合框的立場,這是一團糟......
dt = 當前數據表();
Column( dt, "Coll Date" ) << Data Type( "Character", Informat( "d/m/y" ), Format( "m/d/y" ) );
Column( dt, "整理日期" ) << 建模類型( "連續" );
Column( dt, "整理日期" ) << 順序( 升序 );
Summarize( a = By( :患者 ID1 ) );
插入( a, "<選擇 ID#>", 1 );
//總結( b = By( :Coll Date ) );
date = 關聯數組( ( :Coll Date << 獲取值 ) ) << 獲取鍵;
新窗口(“示例”,
<<莫代爾,
H 列錶框(
面板框(“選擇患者 ID:”,
cb1 = 組合框(
A,
<<設置函數(
函數({這個},
選擇 = this << 獲取選定內容();
r = //對於每一行( Selected(Row State() = :Patient ID1 == Num(selection)));
dt << 獲取行Where(:患者 ID == Num(選擇));
Summarize( b = By( :Coll Date[r] ) );
b << 數據類型( "字符", Informat( "d/m/y" ), Format( "m/d/y" ) );
//b = 關聯數組( (:Coll Date[r] << 獲取值)) << 獲取鍵;
//startDate = 關聯數組( (date[r] << 獲取值 ) ) << 獲取鍵;
cb2 << 設置項目( 日期[r] );
)
)
)
),
面板框(“選擇開始日期:”,
cb2 = 組合框(
乙、
<<設置函數(
函數({這個},
one = this << 獲取選擇();
g = dt << 獲取行Where( :Coll Date > one );
Summarize( c = By( :Coll Date[g] ) );
endDate = :Coll 日期[g];
cb3 << 設置項目( endDate );
)
)
)
),
面板框(“選擇結束日期:”,
cb3 = 組合框(
乙、
<<設置函數(
函數({這個},
兩個 = this << 獲取選擇() ) )
)
)
)
);
對於每一行(
Selected( Row State() ) = :Patient ID1 == Char( Selection ) & Format( :Coll Date, "m/d/y" ) >= one
& Format(:Coll Date, "m/d/y" ) <= 二
);
subdt = dt << Subset( Columns( :Patient ID1, :DOB, :Coll Date ), 輸出表名稱( "Subset" ), );
subdt << Sort( By( :Coll Date ), Replace Table );