
In questa dimostrazione, daremo un'occhiata alle funzioni booleane e alla funzione If. Aprirò una finestra dell'editor di script. Anche in questo caso, la scorciatoia da tastiera è Ctrl+T, oppure puoi andare al menu File e usare la barra degli strumenti. Ci sono molti modi diversi per aprire la nuova finestra dell'editor di script. E lasciatemi portare il log davanti al journal. Tornando alla finestra dell'editor di script, digiterò il codice in cui assegno il valore di alla variabile x. E andrò avanti e la inizializzerò. Poi, su una nuova riga, farò un confronto. Una delle caratteristiche di JSL è che possiamo unire gli argomenti tramite operatori di confronto e farli trattare da JMP come un'unica clausola. Quindi, se digito "less than x" (minore di x) e "less than equal" (minore di uguale), questo verrà valutato tutto in una volta anziché in sequenza, perché questi operatori di confronto, quando JMP li vede concatenati in questo modo, sono quelli che vengono chiamati operatori di elisione. Quindi posso eseguire quella riga e, naturalmente, questo è un confronto vero che è maggiore di pur essendo minore o uguale a. Quindi ottengo il valore booleano come risultato. Ora, probabilmente il nostro uso più comune delle funzioni di confronto è quando testiamo condizioni particolari, ad esempio, in una funzione If. Quindi cambierò la prima riga e sostituirò "" con "" Quindi assegno il valore di"" a x. E poi sostituirò interamente la seconda riga con la mia istruzione If. Quindi If e poi tra parentesi, x minore di virgola, il risultato che verrà restituito sarà la stringa di caratteri sotto il limite. Quindi questa è una semplice istruzione if/then. Se la condizione è vera, restituisco questo risultato. Se la condizione è falsa, non valuto il secondo argomento e restituisco un valore mancante. Quindi eseguirò questo intero script. Di nuovo, la scorciatoia da tastiera per questo è Ctrl+R. Quindi se x memorizza il valore, allora è minore di e otteniamo questo risultato. Ma se modifico il valore assegnato a x in "0" ed eseguo l'intero script, ottengo quel valore mancante perché quella condizione non era vera. E di nuovo, possiamo ottenere un risultato else. Quindi, se la condizione non è vera, invece di un valore mancante, restituirò quest'altro risultato. E qui, apro le virgolette e digito "Oltre il limite". E se eseguo l'intero script, ottengo quel risultato else. Quindi la funzione If può accettare tutte le condizioni e i risultati necessari, e quindi si può sempre ottenere quel risultato else se tutte le condizioni risultano false. Quindi, nel prossimo esempio, prenderemo una tabella con l'età delle persone in anni e la classificheremo in una delle fasi di sviluppo psicologico di Erik Erikson. Quindi torno al diario nella sezione "Sezione" e clicco su "Dati sull'età". Abbiamo quindi degli individui e vogliamo inserirli in queste fasi di sviluppo psicologico. Quindi, di nuovo, nel diario, clicco su "Script per passare dall'età alla fase". Quindi questo script pre-scritto dal journal invia il messaggio "Nuova Colonna" alla tabella dati "Età" con... la colonna avrà il titolo "Stage" e specifichiamo che il tipo di dati sarà "carattere". Quindi, una volta creata la colonna, utilizziamo la funzione "for each row" per popolarla con un'istruzione "If". E ricordate, quando JMP incontra una condizione "true" nell'istruzione "If", l'unico altro argomento che verrà valutato è il risultato corrispondente. Nessuna delle altre condizioni verrà valutata. Quindi, per una persona di età... tutti questi confronti di età sono veri, ma non appena valutiamo "Sì, è maggiore di", restituiamo il risultato "Adulto avanzato" e passiamo alla riga successiva, poiché lo stiamo facendo nel contesto dell'iterazione. In questo modo, non dobbiamo racchiudere ogni livello tra parentesi. Possiamo semplicemente dire se è maggiore di... se è maggiore di... e così via. E una cosa a cui pensare, se avete esaminato i dati... in questo caso, sono distribuiti in modo piuttosto uniforme. Ma se esaminate i dati e notate che tendono ad avere molte osservazioni nella parte alta o molte osservazioni nella parte bassa, allora quella è la parte finale della distribuzione da cui dovete iniziare a suddividere i dati, perché se ci sono moltissime persone la cui età è maggiore di quella indicata nella tabella dati, allora in molte righe la tabella dati valuterà questa condizione, restituirà questo risultato e passerà alla fase successiva dell'iterazione anziché valutare tutto il resto. Quindi, qualsiasi riga (e di nuovo, se questa è la maggioranza delle persone con più di 10 anni) accelererà leggermente l'elaborazione dello script passando all'iterazione successiva non appena viene trovato il risultato corretto. Quindi andiamo avanti ed eseguiamo lo script. E potete vedere che la colonna è stata creata e popolata utilizzando l'istruzione If. Altri due tipi di funzioni di cui vogliamo parlare qui sono le funzioni logiche e le funzioni di interrogazione. Quindi, in molti casi, è necessario testare più di una condizione alla volta. E potete ottenere questo risultato combinando le condizioni in modo logico. Alcuni esempi di funzioni logiche sono le funzioni AND e OR. Quindi la funzione AND, che ha l'operatore e commerciale, garantirà che tutte le condizioni siano vere. La funzione OR ha l'operatore barra verticale. Questo garantisce che almeno una condizione sia vera. Quindi userò la finestra dello script in cui ho lo script Age to Stage e la pulirò. Definirò x a cui verrà assegnato il valore di punto e virgola, a y verrà assegnato il valore di un altro punto e virgola e scriverò tutto su una riga e lascerò che la riformattazione pulisca tutto. Quindi se tra parentesi, x minore di E allora l'operatore qui per OR è quella barra verticale, barra verticale, se x minore di OR y maggiore di Quindi questa è la mia condizione. Digitare una virgola lì. Se una di queste o entrambe sono vere, restituirò il risultato condizione soddisfatta. E se nessuna delle due è vera, restituirò il risultato come stringa di caratteri condizione non soddisfatta. E digiterò di nuovo il punto e virgola finale, come promemoria: lo consideriamo una buona pratica, ma non è obbligatorio terminare lo script con un punto e virgola. Procedo con il clic destro per riformattare. Quindi, dopo aver scritto tutto su una sola riga, pulisco un po'. Quindi, se eseguo lo script e almeno una di queste due condizioni è vera, mi aspetto che venga soddisfatta la prima condizione di risultato. E questo è, in effetti, ciò che ottengo nel log. Se avessi bisogno che entrambe le condizioni fossero vere, sostituirò l'operatore barra verticale con la e commerciale. In questo caso, solo una condizione è vera, ma non entrambe. Quindi mi aspetto di ottenere il risultato else. E quando lo eseguo, questo è ciò che vedo nel log. L'altro tipo di funzione che ho menzionato sono le funzioni di interrogazione. A volte si desidera poter verificare la natura di un valore. Ad esempio, forse si ha bisogno di sapere se il valore è un numero o un elenco. Esistono molti tipi diversi di valori possibili. In alcuni casi, potresti ricevere un errore se provi a eseguire uno script con un valore errato memorizzato in una variabile. Quindi, assicurati di verificare la situazione e, a seconda della natura del valore in quella variabile, lo script potrebbe andare in un modo o nell'altro. Quindi, cancellerò di nuovo il contenuto dello Script Editor. Nella prima riga, assegnerò alla matrice xa. Digiterò quindi x, la funzione di assegnazione, quindi parentesi quadra, virgola e spazio. Questa è la mia prima riga. Spazio, questa è la mia seconda riga. Chiudo la parentesi quadra, digito il mio punto e virgola e lo farò nel contesto di un'istruzione if. Voglio anche mostrarti che esiste questa funzionalità di completamento automatico per le funzioni in JSL. E se digito le prime lettere di una funzione... In questo caso, tutte le funzioni di richiesta iniziano con le lettere IS per is. Quindi premo il tasto Ctrl e la barra spaziatrice. Posso scorrere l'elenco con le frecce per trovare la funzione di ricerca desiderata. In questo caso, userò Is Matrix, quindi premerò Invio per selezionarla e JMP completerà la funzione per me. Ovviamente, devo ancora aprire le parentesi, inserire x, chiudere le parentesi e, prima della parentesi chiusa dell'istruzione If, digitare una virgola e usare gli stessi risultati: condizione soddisfatta, virgolette chiuse, virgola, virgolette aperte, condizione non soddisfatta. Lasciatemi usare le frecce per assicurarmi di aver allineato tutti i dati, quindi clicco con il pulsante destro del mouse per riformattare. Quindi, in questo caso, x memorizza una matrice. Mi aspetto di ottenere questo primo risultato e, quando eseguo lo script, lo ottengo. Supponiamo, però, che il mio script faccia qualcosa di diverso se ciò che x memorizza è una stringa. Forse si tratta di input utente, forse viene recuperato da una tabella dati o da qualche altra parte. Quindi cambierò la parola matrix in string ed eseguirò lo script. Ovviamente, otterrò il risultato else perché la condizione è stata valutata come falsa. Qui avete visto alcuni esempi di funzioni booleane che utilizzano la funzione If per raggruppare i dati e che utilizzano la funzione If in combinazione con funzioni logiche e funzioni di interrogazione.