
In dieser Demonstration betrachten wir Boolesche Funktionen sowie die If-Funktion. Ich öffne ein Skript-Editor-Fenster. Das Tastenkürzel ist Strg+T, oder Sie können über die Symbolleiste im Menü „Datei“ das neue Skript-Editor-Fenster öffnen. Es gibt verschiedene Möglichkeiten, dieses neue Skript-Editor-Fenster zu öffnen. Ich zeige das Protokoll vor dem Journal an. Zurück im Skript-Editor-Fenster gebe ich den Code ein, in dem ich der Variable x den Wert von zuweise. Anschließend initialisiere ich das. Anschließend führe ich in einer neuen Zeile einen Vergleich durch. JSL ermöglicht es uns, Argumente durch Vergleichsoperatoren zu verknüpfen und sie von JMP als eine einzige Klausel behandeln zu lassen. Wenn ich also „kleiner als x“ oder „kleiner gleich“ eingebe, wird dies auf einmal und nicht sequenziell ausgewertet, da diese Vergleichsoperatoren, wenn JMP sie so aneinandergereiht sieht, sogenannte Elidierungsoperatoren sind. Ich kann diese Zeile ausführen, und das ist natürlich ein echter Vergleich, der größer als und kleiner als oder gleich ist. Ich erhalte also den Booleschen Wert als Ergebnis. Am häufigsten verwenden wir Vergleichsfunktionen, um bestimmte Bedingungen zu testen, zum Beispiel in einer If-Funktion. Ich ändere also die erste Zeile und ersetze das durch ein. Ich weise also x den Wert von zu. Anschließend ersetze ich die zweite Zeile komplett durch meine If-Anweisung. Wenn ich also in Klammern „x kleiner als Komma“ einfüge, erhalte ich die Zeichenfolge unterhalb des Grenzwerts. Dies ist also eine einfache If/Then-Anweisung. Wenn die Bedingung als wahr ausgewertet wird, gebe ich dieses Ergebnis zurück. Wenn die Bedingung als falsch ausgewertet wird, bewerte ich das zweite Argument nicht und gebe einen fehlenden Wert zurück. Ich führe also das gesamte Skript aus. Auch hier gilt die Tastenkombination Strg+R. Wenn x also den Wert speichert, ist es kleiner als, und wir erhalten dieses Ergebnis. Wenn ich jedoch den Wert für x ändere und das gesamte Skript ausführe, erhalte ich den fehlenden Wert, da die Bedingung nicht erfüllt war. Auch hier kann ein „Else“-Ergebnis ausgegeben werden. Wenn die Bedingung nicht erfüllt ist, erhalte ich anstelle eines fehlenden Werts das andere Ergebnis. Hier setze ich die Anführungszeichen und gebe „Über dem Limit“ ein. Wenn ich das gesamte Skript ausführe, erhalte ich das „Else“-Ergebnis. Die „If“-Funktion kann also beliebig viele Bedingungen und Ergebnisse annehmen. Das „Else“-Ergebnis kann auch dann ausgegeben werden, wenn alle Bedingungen falsch sind. Im nächsten Beispiel verwenden wir eine Tabelle mit dem Alter von Personen und ordnen sie einer von Erik Eriksons Entwicklungsstufen zu. Ich gehe zurück zum Journal und klicke auf „Altersangaben“. Wir haben also Personen, die wir diesen Entwicklungsstufen zuordnen möchten. Zurück im Journal klicke ich auf „Alter zu Entwicklungsstufe“. Dieses vorgefertigte Skript aus dem Journal sendet die Nachricht „Neue Spalte“ an die Datentabelle „Alter“. Die Spalte trägt den Titel „Stadium“, und wir legen den Datentyp „Zeichen“ fest. Sobald die Spalte erstellt ist, füllen wir sie mit der Funktion „Für jede Zeile“ mithilfe einer „If“-Anweisung. Wie bereits erwähnt: Sobald JMP eine „Wahr“-Bedingung für die „If“-Anweisung erkennt, wird nur noch das entsprechende Ergebnis ausgewertet. Keine der anderen Bedingungen wird ausgewertet. Bei einer Person im Alter von … sind alle Altersvergleiche wahr. Sobald wir jedoch „Ja, ist größer als“ auswerten, geben wir das Ergebnis „Später Erwachsener“ zurück und fahren mit der nächsten Zeile fort, da wir dies im Kontext einer Iteration tun. So müssen wir nicht jede Stufe einklammern. Wir können einfach angeben, ob es größer als ist, ob es größer als ist usw. Und ein Punkt ist zu bedenken: Wenn Sie sich die Daten angesehen haben – in diesem Fall sind sie ziemlich gleichmäßig verteilt. Wenn Sie sich die Daten jedoch angesehen haben und feststellen, dass sie tendenziell viele Beobachtungen am oberen oder unteren Ende aufweisen, sollten Sie mit der Klassifizierung beginnen. Denn wenn viele Personen älter sind als in Ihrer Datentabelle, wertet die Datentabelle in vielen Zeilen diese eine Bedingung aus, gibt dieses Ergebnis zurück und fährt mit dem nächsten Iterationsschritt fort, anstatt alle anderen auszuwerten. Wenn dies die Mehrheit der Personen ist, die älter sind, beschleunigen Sie die Skriptverarbeitung, indem Sie mit der nächsten Iteration fortfahren, sobald das richtige Ergebnis gefunden wurde. Führen wir also das Skript aus. Sie sehen, dass die Spalte mithilfe der If-Anweisung erstellt und gefüllt wurde. Zwei weitere Funktionstypen, die wir hier besprechen möchten, sind logische Funktionen und Abfragefunktionen. Oft müssen Sie mehrere Bedingungen gleichzeitig testen. Dies erreichen Sie durch die logische Kombination Ihrer Bedingungen. Beispiele für logische Funktionen sind die UND- und ODER-Funktionen. Die UND-Funktion mit dem Et-Zeichen stellt sicher, dass alle Bedingungen erfüllt sind. Die ODER-Funktion verwendet den senkrechten Strich. Dieser stellt sicher, dass mindestens eine Bedingung erfüllt ist. Ich nutze einfach das Skriptfenster mit dem Skript „Alter bis Stadium“ und lösche es. Ich definiere x als Semikolon, y als weiteres Semikolon. Ich tippe alles in einer Zeile und lasse die Neuformatierung bereinigen. In Klammern steht also: x kleiner als. Der ODER-Operator ist hier der senkrechte Strich, wenn x kleiner als ODER y größer als. Das ist meine Bedingung. Setzen Sie hier ein Komma. Wenn einer oder beide Punkte erfüllt sind, gebe ich das Ergebnis „Bedingung erfüllt“ zurück. Wenn keines von beiden erfüllt ist, gebe ich das Ergebnis als Zeichenfolge „Bedingung nicht erfüllt“ zurück. Ich tippe das abschließende Semikolon noch einmal ein. Zur Erinnerung: Wir halten das für eine bewährte Methode, aber es ist nicht zwingend erforderlich, das Skript mit einem Semikolon zu beenden. Ich klicke einfach mit der rechten Maustaste, um es neu zu formatieren. Damit habe ich das Ganze etwas aufgeräumt, nachdem ich alles in einer Zeile eingegeben habe. Wenn ich das Skript ausführe und mindestens eine der beiden Bedingungen erfüllt ist, erwarte ich, dass die erste Bedingung erfüllt ist. Und genau das erhalte ich im Protokoll. Wenn beide Bedingungen erfüllt sein müssen, ersetze ich den vertikalen Strich durch das Et-Zeichen. In diesem Fall ist nur eine Bedingung erfüllt, nicht beide. Ich erwarte also das „else“-Ergebnis. Und wenn ich das Skript ausführe, sehe ich das im Protokoll. Die andere Art von Funktion, die ich erwähnt habe, sind die Abfragefunktionen. Manchmal möchte man die Natur eines Werts überprüfen können. Beispielsweise muss man wissen, ob der Wert eine Zahl oder eine Liste ist. Es gibt viele verschiedene Wertetypen. In manchen Fällen erhalten Sie möglicherweise eine Fehlermeldung, wenn Sie versuchen, ein Skript mit einem falschen Wert in einer Variable auszuführen. Stellen Sie also sicher, dass Sie dies abfragen. Je nach Art des Werts in der Variablen kann Ihr Skript in die eine oder andere Richtung gehen. Ich lösche den Inhalt des Skript-Editors erneut. In der ersten Zeile weise ich einer xa-Matrix zu. Ich tippe also x, die Zuweisungsfunktion, und dann eckige Klammer, Leerzeichen, Komma. Das ist meine erste Zeile. Leerzeichen, das ist meine zweite Zeile. Schließen Sie die eckige Klammer, geben Sie mein Semikolon ein. Dann mache ich das im Kontext einer if-Anweisung. Außerdem möchte ich Ihnen zeigen, dass es in JSL diese Autovervollständigungsfunktion für Funktionen gibt. Und wenn ich die ersten Buchstaben einer Funktion eingebe. In diesem Fall beginnen alle Abfragefunktionen mit den Buchstaben IS für is. Und dann drücke ich die Strg-Taste und die Leertaste. Ich kann mit dem Pfeil nach unten durch diese Liste navigieren, um die gewünschte Abfragefunktion zu finden. In diesem Fall wähle ich „Is Matrix“ und drücke die Eingabetaste, um sie auszuwählen. JMP vervollständigt die Funktion. Natürlich muss ich die Klammern noch öffnen und dort „x“ eingeben, die Klammern schließen und vor der schließenden Klammer der If-Anweisung ein Komma setzen. Ich verwende dieselben Ergebnisse: Bedingung erfüllt, geschlossene Anführungszeichen, Komma, öffnende Anführungszeichen, Bedingung nicht erfüllt. Ich klicke mit dem Pfeil nach unten, um sicherzustellen, dass alles richtig ist, und klicke mit der rechten Maustaste, um neu zu formatieren. In diesem Fall speichert x eine Matrix. Ich erwarte also dieses erste Ergebnis, und wenn ich das Skript ausführe, erhalte ich es auch. Nehmen wir jedoch an, mein Skript würde etwas anderes tun, wenn x eine Zeichenfolge speichert. Vielleicht handelt es sich um eine Benutzereingabe, vielleicht stammt sie aus einer Datentabelle oder von woanders. Ich ändere das Wort „Matrix“ hier in „String“ und führe das Skript aus. Natürlich erhalte ich das „Else“-Ergebnis, da die Bedingung als falsch ausgewertet wurde. Sie haben hier einige Beispiele für Boolesche Funktionen gesehen, die die If-Funktion zum Binären von Daten sowie die If-Funktion in Verbindung mit logischen Funktionen und Abfragefunktionen verwenden.