JSL - Comment parcourir Bivariate et enregistrer toutes les splines dans 1 colonneBonjour.J'ai créé un tableau de chaînes contenant les différentes valeurs trouvées dans l'une de mes colonnes. Je voudrais générer une spline pour chaque valeur de mon tableau de chaînes et enregistrer tous les points prédits dans une nouvelle colonne.Je suis capable de parcourir Bivariate(), en changeant une clause Where à chaque itération en une nouvelle valeur dans mon tableau de chaînes, cependant, seuls les derniers points prédits sont enregistrés dans une nouvelle colonne.Comment puis-je enregistrer tous les points prédits dans une nouvelle colonne ?Merci.
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
);
); 

Re: JSL - Comment parcourir Bivariate et enregistrer toutes les splines dans 1 colonneEssayez le rôle By() pour obtenir toutes les prédictions dans la même colonne. L'itération sur une liste n'est alors pas nécessaire et la formule de prédiction générée appliquera automatiquement des instructions conditionnelles pour séparer les différentes valeurs de la colonne par. La principale différence est que tous les tracés partageront la même fenêtre.
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})
);Re: JSL - Comment parcourir Bivariate et enregistrer toutes les splines dans 1 colonne@txnelson ,
Oops. Je n'ai pas vu ce message ultérieur et j'ai répondu à une question précédente en utilisant Eval Expr au lieu de Substitute.
Je ne voulais pas reproduire une réponse.
Désolé pour ça, Jim.
Re: JSL - Comment parcourir Bivariate et enregistrer toutes les splines dans 1 colonneEt je viens de repenser à la formule Prédite pour la colonne Prédit et j'ai réalisé que le processus que vous utilisez va écrire les uns sur les autres au fur et à mesure de leur traitement.Je vous suggère de renommer la colonne Prediced après chaque exécution de bivarié, forçant chaque itération à finir par créer une nouvelle colonne.
Re: JSL - Comment parcourir Bivariate et enregistrer toutes les splines dans 1 colonneVoici une version retravaillée annotée de votre script.Essaye le.Je pense que cela fonctionnera avec vos données.Je n'ai pas pu faire un très bon travail de test, mais les erreurs devraient être mineures.
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]
)
)
);