列の値を比較するために where ステートメントを選択する長い休憩とさびた感じの後にJSLに戻りました。
select where ステートメントが機能しません。かなり単純だと思います。
値を他の 2 つの列の値と比較して行を選択しようとしています。
dt << select where( :Col1 > :Col2 & :Col1< :Col3);
Col1はさらに使用する必要があるため(意図的に)文字であり、Col2、Col3は数値列です。
なにが問題ですか?
GUIからこれを試してみましたが、うまくいかないようです。
ありがとう
Re: 列の値を比較するために where ステートメントを選択するやあ@エンスー、
が述べたように@mzwald 、比較 >、< などには数値が必要です。
:col1 (公称) でこれを回避する 1 つのアイデアは、さまざまな文字クラスに 0、1、2、3、4 などの数値コーディングを使用し (可能であれば)、列プロパティを使用することです。 value labels」を使用して、文字をラベルの役割に配置します。 そうすれば、比較を実行できますが、同時に列の内容をグラフ化または表示すると、代わりに値のラベルが表示されます。
シンプルな 3 列のテーブルと、あなたが書いたのと同じ比較コードでテストしました。 列 1 には 0 ~ 4 の値があり、列 2 は Random Normal(0)、列 3 は Random Uniform(-1,1) です。 この例では、行 6 が選択されています。
お役に立てれば!、
DS

Re: 列の値を比較するために where ステートメントを選択するやあ@エンスー、
対処する必要があることがいくつかわかります。 これらの列をデータ テーブル内での出現によって参照しようとしていると思いますか? その場合は、その方法で参照を作成するように構文を調整する必要があります (つまり、 :Column(#)[] )。 また、最初の列が文字データ型の場合は、その列への参照を num() 関数でラップして、文字列を数値に変換して比較を行う必要があります。 開始するためのコードを次に示します。
dt = current data table();
dt << select where( num(:Column(1)[]) > :Column(2)[] & num(:Column(1)[]) < :Column(3)[]);
これが役立つことを願っています!
@ジュリアン
Re: 列の値を比較するために where ステートメントを選択する 比較では、すべての列が数値である必要があります。