脚本:带有组合框过滤器的数据表子集你好,
我一直在尝试编写一个脚本来创建较大数据表的子集。 新的子集应包含受试者 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 );