提示此問題的問題源自於我匯入 JMP 的表。 JMP 將 TRUE/FALSE 欄位匯入為字元類型。 我想將其與其他邏輯/布林計算結合起來,例如:
:TRUEFALSEcolumn & :NumericValue>100
然而,布林運算符被設計為僅適用於數字資料(我明白為什麼)。 我尋找與 R 的 as.logic() 函數等效的 JSL,並發現了 JSL 的 As Boolean()。
與技術支援互動後(請參閱此處追蹤編號引用的追蹤),我了解到創建 Boolean() 是為了支援 JMP 處理 JSON 檔案的能力。 我認為這裡有更大的潛力,並且希望看到 And()、Or() 和 Not() 等布林運算子支援 As Boolean() 的輸出。
是的,有效的解決方法是使用 Match() 語句將字元“FALSE”轉換為數字 0,將字元“TRUE”轉換為數字 1。 它只是不像 Boolean(:TRUEFALSEcolumn) 那樣簡潔和易於閱讀,而且確實是 JSL 語言中的一個細微差別,對於具有較大統計程式語言知識的統計學家來說,這並不容易理解。 添加該功能會很方便。 誠然不是一個高優先級。
在最近的會議上與艾瑪討論後,我們同意不再提出這項要求。
迷人。 我理解它,但不覺得它很直觀。 所以仍有改進的空間,但至少這有幫助。
我們中的一些人最近正在研究這個問題。 正如您在此處報告的那樣,問題仍然存在,但我想分享一個比 Match() 語句更容易的解決方法。
as boolean("TRUE")>0 & 100>99; //AND
as boolean("False")>0 & 100>99; //OR
//example table
New Table( "example AsBoolean",
Add Rows( 4 ),
New Column( "TrueFalseCol", Character, "Nominal",
Set Values( {"True", "False", "True", "False"} )
),
New Column( "value", Numeric, "Continuous",
Set Values( [100, 100, 50, 50] )
),
New Column( "product", Numeric, "Continuous",
Formula( As Boolean( :TrueFalseCol ) * :value )
),
New Column( "AND", Numeric, "Continuous",
Formula( and(As Boolean( :TrueFalseCol )>0, :value) )
),
New Column( "OR", Numeric, "Continuous",
Formula( or(As Boolean( :TrueFalseCol )>0, :value) )
),
New Column( "NOT", Numeric, "Continuous",
Formula( Not(As Boolean( :TrueFalseCol )>0) )
)
);