Bedingte mehrere JSL-IF-Anweisungen zum Vergleichen von Werten in zwei SpaltenIn meiner Datentabelle möchte ich Werte in zwei verschiedenen Spalten vergleichen und die Vergleichsergebnisse in eine neue Spalte einfügen. Ich kann es mit einer Formel zum Laufen bringen, kann es aber nicht in JSL konvertieren. Ich benötige die folgende Formel als JSL-Skript.
Wenn MHD < MTV * -6 => 0
Wenn MHD > MTV * 6 => 0
Sonst => 1
Hier sind MHD und MTV zwei Datenspalten mit numerischen kontinuierlichen Werten. Ich vergleiche die Werte in diesen beiden Spalten für jede Zeile.
Ich habe das folgende Skript ausprobiert, aber es funktioniert nicht.
Neue Spalte („P/F“, Numerisch, „Nominal“, Formel(If(:MHD < :MTV * -6, 0, :MHD > :MTV*6, 0, 1)))
Für jede Anleitung sind wir sehr dankbar.
Betreff: JSL-bedingte Mehrfach-IF-Anweisung, die Werte in zwei Spalten vergleichtDanke für den tollen Tipp. Jetzt muss ich meine Spaltenbezeichnungen, die Sonderzeichen verwenden, nicht mehr ändern.Betreff: JSL-bedingte Mehrfach-IF-Anweisung, die Werte in zwei Spalten vergleichtJSL interpretiert & etc. als rechnerisches Element und nicht als etwas, das Teil eines Namens ist.Sehen Sie sich die Funktion :Name() an, die Sie um einen Spaltennamen herum platzieren können, um sicherzustellen, dass JSL den Spaltennamen korrekt interpretiert.
Wenn Ihre MDH-Spalte den Namen MDH/PQR hätte, würde JSL den Namen als mathematische Berechnung der Division einer Variablen namens MDH durch eine Variable namens PQR interpretieren.Aber wenn Sie es als Folgendes bezeichnen:
:Name( "MDH/PQR" )
alles wird gut funktionieren.
In Ihrem Code würde es so aussehen
New Column ("P/F", Numeric, "Nominal", Formula(If(:MTV *(-6) < :Name("MDH/PQR") < :MTV * 6,1,0)))Betreff: JSL-bedingte Mehrfach-IF-Anweisung, die Werte in zwei Spalten vergleichtVielen Dank für die schnelle Antwort und die tollen Ideen zur Lösung des Problems. Mein Skript funktioniert jetzt. Eine weitere Sache, die mir auffiel, war, dass das Skript nicht funktionieren würde, wenn eine der Spaltenbezeichnungen ein „-“ oder „&“ hätte. Nachdem diese Sonderzeichen entfernt wurden, funktionierte das Skript ohne Probleme.Betreff: JSL-bedingte Mehrfach-IF-Anweisung, die Werte in zwei Spalten vergleichtDanke schön. Auch diese Lösung hat einwandfrei funktioniert.Betreff: JSL-bedingte Mehrfach-IF-Anweisung, die Werte in zwei Spalten vergleichtFormula( If( :MDH < :MTV * -6 | :MDH > :MTV * 6, 0, 1 )
Vielleicht?
Betreff: JSL-bedingte Mehrfach-IF-Anweisung, die Werte in zwei Spalten vergleichtEs gibt ein kleines Problem mit JSL bei der Handhabung
:MTV * -6
JSL kann -6 als Subtraktion und nicht als negative Zahl betrachten.Daher ist es klüger, es als zu bezeichnen
:MTV * (-6)
um sicherzustellen, dass JMP es richtig interpretiert.
Im Folgenden finden Sie verschiedene Möglichkeiten, die Formel so festzulegen, dass Sie die gewünschten Ergebnisse erzielen.
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)))