Instruction multiple conditionnelle JSL comparant des valeurs dans deux colonnesDans ma table de données, je souhaite comparer des valeurs dans deux colonnes différentes et placer les résultats de la comparaison dans une nouvelle colonne. Je suis capable de le faire fonctionner en utilisant une formule mais pas capable de le convertir en JSL. J'ai besoin de la formule ci-dessous en tant que script JSL.
Si MHD < MTV * -6 => 0
Si MHD > MTV * 6 => 0
Sinon => 1
Ici, MHD et MTV sont deux colonnes de données avec des valeurs continues numériques. Je compare les valeurs de ces deux colonnes pour chaque ligne.
J'ai essayé le script ci-dessous mais cela ne fonctionne pas.
Nouvelle colonne ("P/F", Numérique, "Nominal", Formule(Si(:MHD < :MTV * -6, 0, :MHD > :MTV*6, 0, 1)))
Toute orientation sera grandement appréciée.
Re: JSL conditionnel multiple if instruction comparant des valeurs dans deux colonnesMerci pour le bon conseil. Maintenant, je n'ai plus besoin de changer les étiquettes de mes colonnes qui utilisent des caractères spéciaux.Re: JSL conditionnel multiple if instruction comparant des valeurs dans deux colonnesJSL interprète le & etc. comme un élément de calcul, et non comme quelque chose qui fait partie d'un nom.Jetez un œil à la fonction :Name() que vous pouvez placer autour d'un nom de colonne pour vous assurer que JSL interprète correctement le nom de la colonne.
Si votre colonne MDH s'appelait MDH/PQR, JSL interpréterait le nom comme un calcul mathématique consistant à diviser une variable appelée MDH par une variable appelée PQR.Mais si vous le référencez comme:
:Nom( "MDH/PQR" )
tout fonctionnera bien.
Dans votre code, cela ressemblerait à
New Column ("P/F", Numeric, "Nominal", Formula(If(:MTV *(-6) < :Name("MDH/PQR") < :MTV * 6,1,0)))Re: JSL conditionnel multiple if instruction comparant des valeurs dans deux colonnesMerci pour la réponse rapide et les bonnes idées pour résoudre le problème. Mon script fonctionne maintenant. Une autre chose que j'ai remarquée est que si l'une des étiquettes de colonne avait un '-' ou '&', le script ne fonctionnerait pas. Une fois ces caractères spéciaux supprimés, le script fonctionnait sans aucun problème.Re: JSL conditionnel multiple if instruction comparant des valeurs dans deux colonnesMerci. Cette solution a parfaitement fonctionné aussi.Re: JSL conditionnel multiple if instruction comparant des valeurs dans deux colonnesFormula( If( :MDH < :MTV * -6 | :MDH > :MTV * 6, 0, 1 )
peut être?
Re: JSL conditionnel multiple if instruction comparant des valeurs dans deux colonnesIl y a un petit problème avec JSL dans la gestion
:MTV * -6
JSL peut considérer -6 comme une soustraction, pas comme un nombre négatif.Il est donc plus sage de le référencer comme
:MTV * (-6)
pour s'assurer que JMP l'interprète correctement.
Vous trouverez ci-dessous plusieurs façons de définir la formule pour obtenir les résultats souhaités.
New Column ("P/F", Numeric, "Nominal", Formula(If(:MTV *(-6) < :MDH < :MTV * 6,1,0)))
//or
New Column ("P/F", Numeric, "Nominal", Formula(If(:MTV *(-6) < :MDH | :MDH > :MTV * 6,0,1)))