Je dois manipuler des données à l'aide de diverses formules et stocker la sortie dans une dernière colonne. Je suis capable d'appliquer la formule avec succès et de stocker des données dans une nouvelle colonne mais pas dans la même colonne.
Par exemple,
Dans ce tableau,

J'utilise la formule (abs (diviser (effet, soustraire (USL, moyenne))) * 100)) pour les cellules où les valeurs USL sont présentes et
Formula(abs(Divide(Effect,Subtract( Mean,LSL)))*100)) où les valeurs LSL sont présentes. Mais pour les cellules où le nom de la colonne, LSL et USL sont vides, je veux utiliser la formule : Formula(Divide(abs(Effect)), Mean);
Le script sur lequel je travaille actuellement est :
dtq = Open("path\formula.jmp");
a = dtq << New Column("Final", Formula(abs(Divide(Effect,Subtract( USL,Mean)))*100));
//);
//:Final << Formula(abs(Divide(Effect,Subtract( USL,Mean)))*100);
b = dtq << New Column("Final1",Formula(abs(Divide(Effect,Subtract( Mean,LSL)))*100));
If( Is Empty( dtq << ColumnName ),
:Final << Formula(Divide(abs(Effect)), Mean);
);
show(b);
La sortie que j'obtiens maintenant est:

alors que je veux que les valeurs de Final1 soient dans la même colonne. Aussi,
cette partie du script :
If( Is Empty( dtq << ColumnName ),
:Final << Formula(Divide(abs(Effect)), Mean);
);
ne montre aucune erreur mais ne fonctionne pas aussi bien. Merci pour toute aide.
@Dan_Obermiller Merci pour la solution. J'ai beaucoup trop de tables sur lesquelles je veux que la même formule s'exécute, il serait donc préférable qu'un script le fasse. Merci beaucoup pour la solution rapide cependant..
En supposant qu'une ligne n'aura jamais à la fois :LSL et :USL comme non manquantes, cela traitera tous les cas que vous avez décrits :
If(
!Is Missing( :LSL ), Abs( :Effect / (:Mean - :LSL) ) * 100,
!Is Missing( :USL ), Abs( :Effect / (:USL - :Mean) ) * 100,
Is Missing( :ColumnName ), Abs( :Effect ) / :Mean
)
Cela me semble un peu trop complexe. Tous les calculs peuvent être placés dans une seule colonne de formules :
Si(
Manque( :LSL ) & Manque( :USL ), Abs( :Effet / :Moyenne ),
Manque( :LSL ), Abs( :Effet / (:USL - :Moyenne) ) * 100,
Manque( :USL ), Abs( :Effet / (:Moyenne - :LSL) ) * 100
)
Il n'a pas besoin d'être scénarisé. Interactivement, cela ressemble à ceci :

et ça donne ces résultats :
