創建允許多個結果輸出的 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.
回复:創建允許多個結果輸出的 IF 語句我的專欄(:很好)是連續的。 如果我理解正確的話:本例中的高度是連續的,並且您正在設置一個範圍。 但是,我試圖在“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”子句未正確指定兩次。
回复:創建允許多個結果輸出的 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 )
)
);回复:創建允許多個結果輸出的 IF 語句感謝您與我分享此代碼。 我在單獨的腳本中嘗試了代碼,發現它按照我希望的方式工作。 但是它對我不起作用,這只適用於名義集嗎? 我仍然遇到問題並且缺少範圍錯誤。
代碼現在如下所示:
(當前數據表( ) < <數據過濾器(
模式(展示( 1 ) ,包括( 1 ) ) ,
逆( 0 ) ,
無形的,
添加過濾器(
列( :美好的) ,
在哪裡(:很好=={0,1} ) ) ));
錯誤表明缺少範圍。 是否有一個函數可以設置列或變量的範圍?
我已在“Columns”元素中列出了我的所有列,並且我為我想要過濾掉的所有列單獨設置了“Where”語句。
回复:創建允許多個結果輸出的 IF 語句下面是直接取自腳本索引的示例。它顯示了從多列中進行選擇的語法。請注意,所有要選擇的列都必須列在“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"} )
);