Formación de una fórmula de columna a partir de una matriz asociativaBusqué, pero no encontré un ejemplo claro. Tengo un script que crea una matriz asociativa entre pares de columnas en una tabla. Ahora quiero aprovechar esa matriz para crear una fórmula que haga referencia tanto al valor como a la clave. ¿Cómo se hace?
For( i = 1, i <= N Items( SpecCols ), i++,
key = Column( dt, SpecCols[i] );
value = Column( dt, Char(SpecCols[i])||" Pass/Fail");
assocArray[key] = value;
dt << New Column( (Column( dt, SpecCols[i] ) << get name) || " Best",
Set Property( "Notes", Notes ),
Set Property( "Limits", Limits ),
Formula(If(
:RETEST == Col Minimum(
If(
Col Mean( value, :LOT, :WAFER, :RETEST ) ==
Eval( Parse( value)),
:RETEST
),
:LOT,
:WAFER,
:SiteY,
:SiteX
),
Eval( Parse(key))
))
);
);
Automatización y scriptingRe: Formación de una fórmula de columna a partir de una matriz asociativaEvaluación de expresiones y en casos como este me gusta usar Eval(Substitute())
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Semiconductor Capability.jmp");
aa = Associative Array();
aa["NPN1"] = "NPN2";
aa["PNP1"] = "PNP2";
aa["INM1"] = "INM2";
new_cols = {};
For Each({{key, val}}, aa,
new_col = Eval(Substitute(
Expr(dt << New Column(key ||" "|| val, Numeric, Continuous, Formula(
_term1_ + _term2_
))),
Expr(_term1_), Name Expr(AsColumn(dt, key)),
Expr(_term2_), Name Expr(AsColumn(dt, val))
));
Insert Into(new_cols, (new_col << get name))
);
dt << Move Selected Columns(new_cols, To First);