循环II的数据过滤器嗨,
我有一个数据表,更新(在原始脚本中通过查询),例如每5秒,并将被添加到另一个表。到现在为止还挺好。如何在每次迭代后都不会清除选择?
Names Default To Here(0);
dt0 = New table ("Test",
New Column( "name", Character,"Nominal"),
New Column( "age", numeric, continuous),
New Column("sex", Character,"Nominal"),
New Column("height", numeric, continuous),
New column("weight", numeric, continuous,));
df = dt0 << Data Filter(
Add Filter( Columns( :sex ) )
);
n=0;
e=10;
startwork = Function( {},
dt1=Open( "$sample_data/big class.jmp");
dt0 << Concatenate( current data table(), "Append to First Table");
n+=1;
Close (dt1, nosave);
if(n<E></E>如果我的选择在每次迭代后对数据表和图形有效,直到用户更改该部分,那将是很好的。
非常感谢!
Re:循环II的数据过滤器对于我将脚本实现为循环(如第一个问题)的情况,选择仅基于行号有效。我需要根据列选择进行选择。为此我找到了一个可能的解决方法:
构造一个列表框并对表使用此选择:
Names Default To Here(0);
dt0 = New table ("Test",
New Column( "name", Character,"Nominal"),
New Column( "age", numeric, continuous),
New Column("sex", Character,"Nominal"),
New Column("height", numeric, continuous),
New column("weight", numeric, continuous,));
List={"F","M"};
gb=new window("Choice",
LB1=List Box(List, width(150), maxSelected(5), nlines(1))
);
n=0;
e=10;
startwork = Function( {},
dt1=Open( "$sample_data/big class.jmp");
Choice=LB1 << get selected;
dt0 << Concatenate( current data table(), "Append to First Table");
dt0 << Select Where( Contains( Choice, :sex ) );
n+=1;
Close (dt1, nosave);
if(n<E></E>非常感谢您的回复,我学到了非常有用的命令!
Re:循环II的数据过滤器这是一种略有不同的方法。 它使用来自“Test”数据过滤器的<< Get Script消息,然后稍作修改,然后将其应用于Big Class数据表。 整个过程由应用于测试数据表上的数据过滤器的过滤器更改处理程序触发。
Names Default To Here( 0 );
dt1 = Open( "$sample_data/big class.jmp" );
dt0 = New Table( "Test",
New Column( "name", Character, "Nominal" ),
New Column( "age", numeric, continuous ),
New Column( "sex", Character, "Nominal", Values( {"F", "M", "F", "M", "F", "M", "F", "M"} ) ),
New Column( "height", numeric, continuous ),
New Column( "weight", numeric, continuous, )
);
df0 = dt0 << Data Filter( Add Filter( Columns( :sex ), /* variable get where selection df0*/ ) );
f = Function( {a},
dschar = Char( df0 << get script );
Try( df1 << close );
dschar = "df1 = dt1 " || Substr( dschar, 21 );
Eval( Parse( dschar ) );
Try( df1 << close );
);
rs = df0 << Make Filter Change Handler( f );
您还可能希望探索对主数据表进行子集化的功能,或者从主表创建摘要数据表,并使用该选项“链接到原始表”。 然后,您可以在子集或汇总数据表上放置数据过滤器,它将自动复制原始表中的更改。
Re:循环II的数据过滤器感谢您的回答。不幸的是,我无法从帮助==>脚本索引==>数据过滤器中得到提示..........
我尝试了多种选择,但没有任何效果。
如何从df0获取where子句或where参数作为变量,并将其作为参数放在df1中?
我找到了<< get where子句,但这只是一种文本格式...
Names Default To Here(0);
dt0 = New table ("Test",
New Column( "name", Character,"Nominal"),
New Column( "age", numeric, continuous),
New Column("sex", Character,"Nominal", Values({"F", "M", "F", "M", "F", "M", "F", "M"})),
New Column("height", numeric, continuous),
New column("weight", numeric, continuous,));
df0 = dt0 << Data Filter(
Add Filter( Columns( :sex ),/* variable get where selection df0*/ )
);
dw0 = df0 << get where clause;
dt1=Open( "$sample_data/big class.jmp");
df1 = dt1 << Data Filter(
Add Filter( Columns( :sex) /* set where selection from df0*/ )Re:循环II的数据过滤器我建议在更新之前,从数据过滤器中检索Where子句,然后执行更新,然后重新应用检索到的Where子句。
看到
帮助==>脚本索引==>数据过滤器..........
详情和例子