JSL – So iterieren Sie über Bivariate und speichern alle Splines in einer SpalteHallo.Ich habe ein Array von Zeichenfolgen erstellt, das die verschiedenen Werte enthält, die in einer meiner Spalten gefunden wurden. Ich möchte für jeden Wert in meinem String-Array einen Spline generieren und alle vorhergesagten Punkte in einer neuen Spalte speichern.Ich kann über Bivariate() iterieren und bei jeder Iteration eine Where-Klausel in einen neuen Wert in meinem String-Array ändern. Allerdings werden nur die letzten vorhergesagten Punkte in einer neuen Spalte gespeichert.Wie kann ich erreichen, dass alle vorhergesagten Punkte in einer neuen Spalte gespeichert werden?Danke.
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
);
); 

Betreff: JSL – So iterieren Sie über Bivariate und speichern alle Splines in einer SpalteProbieren Sie die Rolle „By()“ aus, um alle Vorhersagen in derselben Spalte abzurufen. Eine Iteration über eine Liste ist dann nicht erforderlich und die generierte Vorhersageformel wendet automatisch bedingte Anweisungen an, um die verschiedenen Werte der Nebenspalte zu trennen. Der Hauptunterschied besteht darin, dass alle Diagramme dasselbe Fenster verwenden.
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})
);Betreff: JSL – So iterieren Sie über Bivariate und speichern alle Splines in einer Spalte@txnelson ,
Hoppla. Ich habe diesen späteren Beitrag nicht gesehen und eine frühere Frage mit Eval Expr statt Substitute beantwortet.
Ich wollte keine Antwort duplizieren.
Tut mir leid, Jim.
Betreff: JSL – So iterieren Sie über Bivariate und speichern alle Splines in einer SpalteUnd ich habe gerade noch einmal über die Predicted-Formel für die Predicted-Spalte nachgedacht und festgestellt, dass der von Ihnen verwendete Prozess bei der Verarbeitung übereinander schreiben wird.Ich schlage vor, dass Sie die Prediced-Spalte nach jeder Ausführung von „bivariate“ umbenennen, sodass bei jeder Iteration am Ende eine neue Spalte erstellt wird.
Betreff: JSL – So iterieren Sie über Bivariate und speichern alle Splines in einer SpalteHier ist eine kommentierte überarbeitete Version Ihres Skripts.Versuch es.Ich glaube, dass es mit Ihren Daten funktionieren wird.Ich konnte beim Testen keine wirklich gute Arbeit leisten, aber etwaige Fehler dürften geringfügig sein
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]
)
)
);