Ho pensato di aver trovato una soluzione con il mio ultimo post, ma il problema è più complicato di quanto pensassi. Ho creato una serie di stringhe, in base ai valori contenuti in una delle mie colonne. Quindi, voglio eseguire il looping della funzione Bivariate (), iterando attraverso i valori dell'array mentre li passiamo nella clausola Where. Quando eseguo lo script, le Spline vengono generate correttamente, tuttavia il comando {save predicted} non funziona correttamente. Gli unici pronostici che vengono salvati appartengono all'ultimo elemento dell'array e non agli altri elementi. Sembra che {save predicted} venga eseguito una volta sola, alla fine del mio ciclo for / solo per l'ultimo elemento di ProcessArray, invece di eseguire per sempre l'iterazione del ciclo for / ogni elemento di 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 ,
Quando si specifica Previsione salvataggio mentre si utilizza una clausola Where (), la formula prevista risultante sarà simile a questa

Questo è stato creato con i valori codificati per la clausola Where (). Se guardi i titoli su ciascuna delle finestre di Bivariata, afferma:
Where( :c_type == "Cdg" & :process == ProcessArray[n] )
JMP calcolerà correttamente le spline, tuttavia non sostituirà il valore di ProcessArray [n].
Ti suggerisco di modificare il ciclo Bivariate a questo
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
Inoltre, se si desidera ottenere un elenco di valori univoci in column: process, è possibile farlo semplicemente con Summarize () o Associative Array (). Vedere lo script seguente utilizzando una tabella di dati di esempio 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})
)
))
);