JSL - Come eseguire l'iterazione su Bivariate e salvare tutte le spline su 1 colonnaCiao.Ho creato un array di stringhe, contenente i vari valori trovati in una delle mie colonne. Vorrei generare una spline per ogni valore presente nel mio array di stringhe e salvare tutti i punti previsti in una nuova colonna.Sono in grado di scorrere Bivariate(), modificando una clausola where con ogni iterazione in un nuovo valore nel mio array di stringhe, tuttavia, solo gli ultimi punti previsti vengono salvati in una nuova colonna.Come posso salvare tutti i punti previsti in una nuova colonna?Grazie.
Proc = "new";
processArray = {};
DataCV=open("C:\Desktop\JMP\sample_data.csv");
for (l = 1, l < 32521, l++, // Generate 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++, // Generate and save multiple predicteds
biv = Bivariate(
Y( :c_mm_deembed_pf ),
X( :v_dut_volt ),
Where( :c_type == "Cdg" & :process == processArray[n] ),// :process == processArray[n] appears to be working, as 6 splines are generated
Fit Spline( 0.1, standardized, {save predicteds}) // {save predicteds} is not saving all 6 splines, only last spline
);
); 

Ri: JSL - Come eseguire l'iterazione su Bivariate e salvare tutte le spline su 1 colonnaProva il ruolo By() per ottenere tutte le previsioni nella stessa colonna. L'iterazione su un elenco non è quindi necessaria e la formula di previsione generata applicherà automaticamente istruzioni condizionali per separare i diversi valori della colonna per. La differenza principale è che tutti i grafici condivideranno la stessa finestra.
DataCV = Open("C:\Desktop\JMP\sample_data.csv");
DataCV << biv = Bivariate(
Y(:c_mm_deembed_pf),
X(:v_dut_volt),
By(:process),
Where(:c_type == "Cdg"),
Fit Spline(0.1, Standardized, {Save Predicteds})
);Ri: JSL - Come eseguire l'iterazione su Bivariate e salvare tutte le spline su 1 colonna@txnelson ,
Ops. Non ho visto questo post successivo e ho risposto a una domanda precedente utilizzando Eval Expr invece di Substitute.
Non volevo duplicare una risposta.
Mi dispiace, Jim.
Ri: JSL - Come eseguire l'iterazione su Bivariate e salvare tutte le spline su 1 colonnaE ho ripensato alla formula Previsto per la colonna Previsto e mi sono reso conto che il processo che stai utilizzando si scriverà uno sopra l'altro man mano che vengono elaborati.Suggerisco di rinominare la colonna Predetta dopo ogni esecuzione di bivariata, forzando ogni iterazione a creare una nuova colonna.
Ri: JSL - Come eseguire l'iterazione su Bivariate e salvare tutte le spline su 1 colonnaEcco una versione rielaborata con annotazioni del tuo script.Provalo.Credo che funzionerà con i tuoi dati.Non sono riuscito a fare un buon lavoro di test, ma eventuali errori dovrebbero essere minori
Names Default To Here( 1 );
Proc = "new";
processArray = {};
DataCV = Open( "C:\Desktop\JMP\sample_data.csv" );
// In the commented area is a reworked version of your code that I believe
// simplifies the syntax of what you were doing. Please review it and see
// what changes I made.
/*for (l = 1, l <= N Rows(DataCV) , l++, // Generate array of strings
if (proc == :process[l],
print("same process")
,
Insert Into(processArray, :process[l]);
proc = :process[l];
Show(proc)
);
);*/
// The summarize() function is a much faster way to get the values found for
// a spcific column or combination of columns
Summarize( DataCV, processArray = By( :process ) );
For( n = 1, n <= Length( processArray ), n++, // Generate and save multiple predicteds
// I found that using a JSL variable in the where clause was having issues, because the formula
// created for the Predicted values contains a reference to PredictedArray, which JSL Variable can change,
// which makes the formula invalid. So what needs to be done, is to subsitute the actual value for
// predictedArray[n] into the Where Clause
Eval(
Substitute(
Expr(
biv = Bivariate(
Y( :c_mm_deembed_pf ),
X( :v_dut_volt ),
Where( :c_type == "Cdg" & :process == __process__ ), // :process == processArray[n] appears to be working, as 6 splines are generated
Fit Spline( 0.1, standardized, {save predicteds} ) // {save predicteds} is not saving all 6 splines, only last spline
)
),
Expr( __process__ ), processArray[n]
)
)
);