创建允许多个结果输出的 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"} )
);