使用布爾函數在這個演示中,我們將看看布爾函數,以及我將獲得一個腳本編輯器窗口的 If 函數。 同樣,鍵盤快捷鍵是 Ctrl+T 或者您可以轉到“文件”菜單,使用工具欄。 許多不同的方式來獲得新的腳本編輯器窗口。 讓我把日誌帶到日誌前面。 回到腳本編輯器窗口,我將鍵入代碼,在其中將值賦給變量 x。 我會繼續初始化它。 然後在新的一行中,我將進行比較,JSL 中的一件事是我們可以通過比較運算符連接參數,並讓 JMP 將它們視為單個子句。 因此,如果我輸入了小於 x 小於等於的值,這將一次全部計算而不是按順序計算,因為當 JMP 看到這些比較運算符像這樣串在一起時,它們就是所謂的省略運算符。 所以我可以運行那條線,當然,這是一個真正的比較,它大於同時小於或等於所以我得到布爾值作為結果。 現在,比較函數最常見的用途可能是在我們測試特定條件時,例如在 If 函數中。 所以我要更改第一行並將 a 替換為 a 所以我將值分配給 x。 然後我將用我的 If 語句完全替換第二行。 所以如果和然後在括號中,x 小於逗號,將返回的結果將是限制下的字符串。 所以這是一個簡單的 if/then 語句。 如果條件評估為真,我將返回此結果。 如果條件評估為假,我不評估第二個參數並返回缺失值。 所以我要運行整個腳本。 同樣,鍵盤快捷鍵 Ctrl+R。 因此,如果 x 正在存儲該值,則它小於並且我們得到這個結果。 但是,如果我將分配給 x 的值更改為並運行整個腳本,我會得到那個缺失的值,因為那個條件不成立。 再一次,我們可以得到一個 else 結果。 因此,如果條件不成立,而不是缺失值,我將返回另一個結果。 在這裡,我將打開我的雙引號並輸入 Over the limit。 如果我運行整個腳本,我會得到 else 結果。 因此,If 函數可以根據需要採用盡可能多的條件和結果,然後如果所有條件都為 false,則始終可以得到 else 結果。 所以在下一個例子中,我們將使用一個人的年齡表,並將其分類為埃里克·埃里克森的心理髮展階段之一。 因此,我將返回部分中的期刊,然後單擊年齡數據。 所以我們有個人,我們希望將他們納入心理髮展的這些階段。 因此,再次回到日誌中,我將單擊 Age to Stage Script。 因此,來自期刊的這個預先編寫的腳本正在向數據表 Age 發送 New Column 消息,該列的標題為 Stage,我們指定數據類型為字符。 然後,一旦創建了列,我們將使用 for each row 函數使用 If 語句填充它。 回想一下,一旦 JMP 在 If 語句中遇到一個真條件,唯一要評估的其他參數就是相應的結果。 不會評估任何其他條件。 因此,對於一個年齡較大的人,所有這些年齡比較都是正確的,但是一旦我們評估,是的,大於我們返回 Late Adult 結果並繼續下一行,因為我們是在迭代的上下文中執行此操作. 因此,這樣一來,我們就不必為每個級別都加上括號。 我們只能說它是否大於它是否大於等等。 還有一件事要考慮,如果你查看數據——在這種情況下,它們是非常均勻分佈的。 但是,如果您查看數據並註意到它往往在高端有很多觀察結果,或者在低端有很多觀察結果,那麼這就是您想要開始分箱的分佈的結尾,因為如果有很多很多人的年齡大於您的數據表中的年齡,然後在許多行中,數據表將評估這一個條件,返回此結果,然後繼續迭代的下一步,而不是評估其他所有內容。 所以任何行 - 再一次,如果這是大多數人都結束的地方,那麼只要找到真正的結果,就可以通過移動到下一個迭代來稍微加快腳本處理速度。 所以讓我們繼續運行腳本。 您可以看到該列已創建並填充,然後使用 If 語句。 我們在這裡要討論的另外兩種類型的函數是邏輯函數和查詢函數。 因此,在許多情況下,您需要一次測試多個條件。 您可以通過以合乎邏輯的方式組合您的條件來實現這一目標。 邏輯函數的一些示例是 AND 和 OR 函數。 因此,具有 & 運算符的 AND 函數將確保所有條件都為真。 OR 函數具有垂直管道運算符。 這確保了至少一個條件為真。 因此,我將只使用包含 Age to Stage 腳本的腳本窗口並將其清除。 我將定義 x 為分配分號的值,y 將分配另一個分號的值,並且我將在一行上鍵入所有內容並讓重新格式化清理內容。 所以如果在括號中,x 小於 And 然後這裡的運算符 OR 是那個豎線,垂直管道,如果 x 小於 OR y 大於所以這就是我的條件。 在那裡輸入逗號。 如果其中任何一個或兩者都為真,那麼我將返回滿足的結果條件。 如果兩者都不成立,我會將結果作為未滿足的字符串條件返回。 我將再次鍵入我的結束分號,作為提醒,我們認為這是一種最佳做法,但不需要以分號結束您的腳本。 我會繼續並右鍵單擊以重新格式化。 因此,在我將其全部輸入一行之後,只需將其清理一下即可。 因此,如果我運行腳本,這兩個條件中至少有一個為真,我希望得到滿足的第一個結果條件。 事實上,這就是我在日誌中得到的。 如果我需要兩個條件都為真,我將用 & 號替換垂直管道運算符。 在這種情況下,只有一個條件為真,但不是兩者都為真。 所以我希望得到其他結果。 當我運行它時,這就是我在日誌中看到的內容。 我提到的另一類功能是查詢功能。 有時您希望能夠檢查值的性質。 例如,您可能需要知道該值是數字還是列表。 有很多不同類型的值是可能的。 在某些情況下,如果您嘗試使用存儲在變量中的錯誤類型的值來運行腳本,您可能會收到錯誤消息。 因此,您要確保查詢到這一點,並且您的腳本可能會以一種或另一種方式運行,具體取決於該變量中值的性質。 所以我要再次清除Script Editor的內容。 在第一行中,我將分配給 xa 矩陣。 所以我將輸入 x,assign 函數,然後輸入方括號,空格逗號。 所以這是我的第一行。空間,這是我的第二排。 關閉那個方括號,輸入我的分號,然後我將在 if 語句的上下文中執行此操作,並且我還想向您展示 JSL 中的函數具有這種自動完成功能。 如果我輸入函數的前幾個字母。 在這種情況下,查詢函數都以字母 IS 開頭,表示 is。 然後按 Control 鍵和空格鍵。 我可以在此列表中向下箭頭以找到我想要的查詢功能,我將使用 Is Matrix,然後按 Enter 選擇它,JMP 會為我完成該功能。 當然,我還是要打開括號,我把 x 放在那裡,關閉括號,然後在 If 語句的右括號之前,我會輸入一個逗號,我會使用相同的滿足條件、閉合雙引號、逗號、不滿足打開雙引號條件的結果。 讓我箭頭以確保我已經讓每個人都排好隊,然後我將右鍵單擊以重新格式化。 所以在這種情況下,x 存儲了一個矩陣。 所以我希望得到第一個結果,當我運行腳本時,我確實得到了。 不過,讓我們假設,如果 x 存儲的是字符串,我的腳本會做一些不同的事情。 也許這是用戶輸入,也許是從數據表或其他地方檢索到的。 所以我要把這裡的詞矩陣改成字符串,然後運行腳本。 因此,當然,我得到 else 結果,因為條件評估為假。 所以在這裡,您看到了一些布爾函數的示例,這些示例使用 If 函數對數據進行分箱,以及將 If 函數與邏輯函數和查詢函數結合使用。