Je pensais avoir trouvé une solution avec mon dernier message, mais il s'avère que le problème est plus compliqué que je ne le pensais. J'ai créé un tableau de chaînes, basé sur les valeurs contenues dans l'une de mes colonnes. Ensuite, je souhaite parcourir la fonction Bivariate (), en parcourant des valeurs de tableau tout en les transmettant à la clause Where. Lorsque j'exécute le script, les splines sont générées correctement. Toutefois, la commande {save predits} ne fonctionne pas correctement. Les seules prévisions qui sont enregistrées appartiennent au dernier élément du tableau, et non aux autres éléments. Il semble que {save predits} ne soit exécuté qu'une seule fois, à la fin de ma boucle for / uniquement pour le dernier élément de ProcessArray, au lieu d'exécuter à tout moment l'itération de l'élément for loop / every de ProcessArray.
l = 0;
Proc = "new";
ProcessArray = {};
DataCV=open("C:\Desktop\JMP\sample_data.csv")<BR />
For (l = 1, l < 32521, l++, // Create array of strings
if (proc == (Row()=l; :process),
print("same process"),
Insert Into(processArray, (Row()=l; :process)); proc = (Row()=l; :process); Show(proc)
);
);
for (n = 1, n <= length(processArray), n++, // Create and save multiple splines, for all values of ProcessArray[]
Bivariate(
Y( :c_mm_deembed_pf ),
X( :v_dut_volt ),
Where( :c_type == "Cdg" & :process == ProcessArray[n] ),
Fit Spline( 0.1, standardized, {save predicteds})
);
);

@ adjo9835 ,
Lorsque vous spécifiez Save Predicted en utilisant une clause Where (), la formule prédite résultante ressemblera à ceci:

Cela a été créé avec des valeurs where codées en dur pour la clause Where (). Si vous regardez les titres de chacune de vos fenêtres à deux variables, vous remarquerez:
Where( :c_type == "Cdg" & :process == ProcessArray[n] )
JMP calculera correctement les splines, mais ne substitue pas la valeur de ProcessArray [n].
Je vous suggère de modifier la boucle bivariée à cette
for (n = 1, n <= length(ProcessArray), n++, // Create and save multiple splines, for all values of ProcessArray[]
Eval( EvalExpr( Bivariate(
Y( :c_mm_deembed_pf ),
X( :v_dut_volt ),
Where( :c_type == "Cdg" & :process == Expr(ProcessArray[n] ) ),
Fit Spline( 0.1, standardized, {save predicteds})
) ) );
); //end for
De plus, si vous souhaitez obtenir une liste de valeurs uniques dans column: process, vous pouvez le faire très simplement avec Summarize () ou Associative Array (). Consultez le script ci-dessous à l'aide d'un exemple de table de données JMP.
Names Default to Here(1);
dt = Open("$Sample_Data/SATByYear.jmp");
r_aa = (Associative Array(:Region)) << get keys;
show(r_aa);
summarize( rarray = By(:Region));
show(rarray);
for(n=1, n <= nitems(rarray), n++,
Eval (EvalExpr(
Bivariate(
Y( :SAT Math),
X( :Year),
Where( :Region == Expr( rarray[n] ) ),
Fit Spline( 0.1, standardized, {save predicteds})
)
))
);