これを引き起こす問題は、JMP にインポートしたテーブルから発生します。 JMP は、TRUE/FALSE の列を文字タイプとしてインポートします。 これを他の論理/ブール計算と組み合わせたいので、たとえば次のようにします。
:TRUEFALSEcolumn & :NumericValue>100
ただし、ブール演算子は数値データのみを処理するように設計されています (その理由は理解しています)。 R の as.logical() 関数に相当する JSL を探していたところ、JSL の As Boolean() を見つけました。
テクニカル サポートとのやりとりの結果 (こちらの追跡番号で参照されるトラックを参照)、As Boolean() が JMP の JSON ファイル処理機能をサポートするために作成されたことを理解しました。 ここにはさらに可能性があると考えており、As Boolean() の出力が And()、Or()、Not() などのブール演算子でサポートされることを望んでいます。
はい、有効な回避策は、Match() ステートメントを使用して、文字「FALSE」を数値 0 に変換し、文字「TRUE」を数値 1 に変換することです。 これは As 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) )
)
);
魅力的な。 理解はできますが、直感的に理解できるとは思えません。 まだ改善の余地はありますが、少なくともこれは役に立ちます。