有没有一种方法可以使用不同的行过滤器来调用用户函数抱歉。我不是用标题来最好地描述它,而是尝试说明我目前拥有的以及我想要实现的目标:
我有的:
所以我有这个函数可以计算Col Min,Max和Mean
col_stats = Function( { COL_NAME }, {},
curr_dt = Cuurent Data Table();
min_val = Col Min ( curr_dt:Eval(COL_NAME));
max_val = Col Max ( curr_dt:Eval(COL_NAME));
mean_val = Col Mean ( curr_dt:Eval(COL_NAME));
Eval List({min_val, max_val, mean_val});
);我要实现的目标:
我希望能够调用col_stat函数,使用一个或多个特定列表的组合来过滤数据。
列表的数量可以根据用户而变化,例如,在下面的示例中,用户选择temp和vcc(用户可以添加频率等)
temperature = {-40, 0, 25, 100};<BR />vcc = {1.2, 1.26, 1.32};我希望能够使用col_stat函数获得最小最大均值
-40和1.20V
-40和1.26V
等等。
如果知道列表的数目,我知道我可以做一个double for循环来遍历两个列表的组合,但是我想以用户可以添加更多列表的方式扩展它
希望我能很好地解释。
脚本编写回复:有没有一种方法可以使用不同的行过滤器来调用用户函数我对此的想法是,您需要对函数进行非常简单的更改,以使其仅在数据表中选择的行上起作用。 调用函数的Show()假定数据表Big Class已打开。
col_stats = Function( {dt, COL_NAME},
{defaultlocal},
min_val = Col Min( If( Selected( Row State( Row() ) ), column(dt, COL_NAME ), . ) );
max_val = Col Max( If( Selected( Row State( Row() ) ), column(dt, COL_NAME ), . ) );
mean_val = Col Mean( If( Selected( Row State( Row() ) ), column(dt, COL_NAME ), . ) );
Return( Eval List( {min_val, max_val, mean_val} ) );
);
show(col_stats(dt,"height"));
通过仅对选定的行进行计算,您可以使用以下功能
dt <<选择Where()
定义所需的项目组合,然后调用函数并获得结果。
而且,您不必将所有内容强制放入一个“选择位置”。 如果查看“选择地点”的定义,您将看到可以通过几个Select Where()子句并指定是否从当前选择扩展合同来动态构建最终的整体选择。如果当前选中所有带有-40的行,则可以告诉JMP添加进一步的限定条件“仅vcc为1.20)
回复:有没有一种方法可以使用不同的行过滤器来调用用户函数使用嵌套循环:{{温度},{vccs}}?
回复:有没有一种方法可以使用不同的行过滤器来调用用户函数
如果您使用Where子句,则可能会发现获取感兴趣的行的值并使用matrix方法更快一些:
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
col_stats = Function( {dt, rows, COL_NAME},
{defaultlocal},
vals = column(dt, COL_NAME )[rows];
min_val = Min( vals );
max_val = Max( vals );
mean_val = Mean( vals );
Return( Eval List( {min_val, max_val, mean_val} ) );
);
show(col_stats(dt, dt<<GET rows="" where=""></GET>
这确实需要牺牲一点内存来提高速度-您有两个额外的向量,但是在JSL评估中不需要任何循环或条件。
回复:有没有一种方法可以使用不同的行过滤器来调用用户函数进行嵌套的for循环将需要对两个列表的两个for循环进行硬编码,对吗?
我想避免这种情况,因为如果用户添加更多的过滤器列表,例如freq = {10,20,30},那将不起作用,对吗?
如果我在“ By”列表中添加temp,wafer,vcc,则它希望其工作方式与“ By”中的“ By”非常相似,它将生成temp,wafer和vcc所有组合的分布。但是我喜欢它与我自己的功能配合使用。