複数の結果出力を可能にする IF ステートメントを作成する列の値 1 または 0 に基づいてデータをフィルタリングしようとしています。 1 または 0 をフィルターで除外することはできますが、すべての列を 1 と 0 の両方で表示できるようにしたいと考えています。 さまざまなことを試してみましたが、範囲の問題が発生するか、完全に指定されていないという問題が発生します。 ユーザーは、1、0、または両方を希望する場合にラジオ ボックスに入力できますが、エラーなしで両方を表示させることはできません。
(Current Data Table() << Data Filter(
Mode( Show( 1 ), Include( 1 ) ),
Inverse( 0 ),
invisible,
Add Filter(
columns(:Fine),
Where(IF(V=="Coarse", :Fine==0, V=="Fines",:Fine==1,V=="Both",:Fine >=0 ))))), //Coarse, Fines or Both are selected in a previous code that works well.
Re: 複数の結果出力を可能にする IF ステートメントを作成する私のコラム(:Fine)はまだまだ続きます。 私の理解が正しければ、この例の :height は連続的であり、範囲を設定しています。 ただし、「Where」ステートメント内に「IF」ステートメントを設定しようとしています。
<SPAN class="token function">Current Data Table</SPAN><SPAN class="token punctuation">(</SPAN><SPAN class="token punctuation">)</SPAN> <SPAN class="token operator"><</SPAN><SPAN class="token operator"><</SPAN><SPAN class="token messages"> Data Filter</SPAN><SPAN class="token punctuation">(</SPAN>
Location<SPAN class="token punctuation">(</SPAN> <SPAN class="token punctuation">{</SPAN><SPAN class="token number">314</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token number">74</SPAN><SPAN class="token punctuation">}</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
Add Filter<SPAN class="token punctuation">(</SPAN>
columns<SPAN class="token punctuation">(</SPAN> <SPAN class="token punctuation">:</SPAN>age<SPAN class="token punctuation">,</SPAN> <SPAN class="token punctuation">:</SPAN>height <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
Where<SPAN class="token punctuation">(</SPAN> <SPAN class="token punctuation">:</SPAN>age <SPAN class="token operator">==</SPAN> <SPAN class="token punctuation">{</SPAN><SPAN class="token number">12</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token number">14</SPAN><SPAN class="token punctuation">}</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN>
Where<SPAN class="token punctuation">( If( x=="tall",:height >=72, x=="average", </SPAN> <SPAN class="token punctuation">:</SPAN>height <SPAN class="token operator">>=</SPAN> <SPAN class="token number">58</SPAN> <SPAN class="token operator">&</SPAN> <SPAN class="token punctuation">:</SPAN>height <SPAN class="token operator"><=</SPAN> <SPAN class="token number">66, x=="Short", :height <= "58"</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">, // x is selected previously in a radio box. </SPAN>
Display<SPAN class="token punctuation">(</SPAN> <SPAN class="token punctuation">:</SPAN>age<SPAN class="token punctuation">,</SPAN> Size<SPAN class="token punctuation">(</SPAN> <SPAN class="token number">160</SPAN><SPAN class="token punctuation">,</SPAN> <SPAN class="token number">90</SPAN> <SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">,</SPAN> List Display <SPAN class="token punctuation">)</SPAN>
<SPAN class="token punctuation">)</SPAN>
<SPAN class="token punctuation">)</SPAN><SPAN class="token punctuation">;</SPAN>こんなことやったら。 "Where" 句が 2 回正しく指定されていないというエラーが表示されます。
Re: 複数の結果出力を可能にする IF ステートメントを作成する:Fine という名前の列は連続列として定義されていますか?Ordinal または Nominal の場合、構文は正しいですが、Continuous の場合、構文は次のようになります。
Current Data Table() << Data Filter(
Location( {314, 74} ),
Add Filter(
columns( :age, :height ),
Where( :age == {12, 14} ),
Where( :height >= 58 & :height <= 66 ),
Display( :age, Size( 160, 90 ), List Display )
)
);Re: 複数の結果出力を可能にする IF ステートメントを作成するこのコードを共有していただきありがとうございます。 別のスクリプトでコードを試してみたところ、コードが希望どおりに動作することがわかりました。 しかし、私にとってはうまくいきません。これは公称セットでのみ機能しますか? まだ問題があり、範囲欠落エラーが発生しています。
コードは次のようになります。
(現在のデータテーブル( ) < <データフィルター(
モード(見せる( 1 ) 、含む( 1 ) ) 、
逆数( 0 ) 、
見えない、
フィルターの追加(
列( :大丈夫) 、
どこ(:罰金 =={0,1} ) ) ));
範囲が見つからないというエラーが表示されます。 列や変数の範囲を設定できる機能はありますか?
「Columns」要素にすべての列をリストし、フィルターで除外するすべての列に対して「Where」ステートメントを分けています。
Re: 複数の結果出力を可能にする IF ステートメントを作成する以下は、Scripting Index から直接取得した例です。複数の列から選択するための構文を示します。選択されるすべての列は「Columns」要素にリストする必要があり、where 句は列ごとに個別に設定する必要があることに注意してください。
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Cities.jmp" );
obj = dt << Data Filter();
obj << Add Filter( columns( :POP ) );
obj << Add Filter(
columns( :Region, :State, :City ),
Where( :Region == "S" ),
Where( :State == {"SC", "NC"} )
);