Creare un'istruzione IF che consenta più output di risultatiSto cercando di filtrare i dati in base a un valore in una colonna 1 o 0. Posso farlo filtrare l'1 o lo 0, ma mi piacerebbe anche poter mostrare tutte le colonne sia 1 che 0. Ho provato varie cose e ne sono usciti con un problema di intervallo o con un problema che non è stato completamente specificato. L'utente ha la possibilità di inserire in una scatola radio se desidera 1, 0 o entrambi, ma non riesco a farli visualizzare entrambi senza errori.
(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.
Ri: Creare un'istruzione IF che consenta più output di risultatiLa mia rubrica (:Fine) è continua. Se ho capito bene: l'altezza in questo esempio è continua e stai impostando un intervallo. Tuttavia, sto cercando di impostare un'istruzione "IF" in un'istruzione "Where".
<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>Se faccio qualcosa del genere. Viene visualizzato un errore che indica che la clausola "Where" non è stata specificata correttamente 2 volte.
Ri: Creare un'istruzione IF che consenta più output di risultatiLa tua colonna denominata:Fine è definita come una colonna continua?Se è Ordinale o Nominale la tua sintassi è corretta, tuttavia, se è Continua, la sintassi è quella elencata di seguito
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 )
)
);Ri: Creare un'istruzione IF che consenta più output di risultatiGrazie per aver condiviso questo codice con me. Ho provato il codice in uno script separato e ho visto che funziona come vorrei che il mio codice funzionasse. Tuttavia non funziona per me, funziona solo per set nominali? Ho ancora un problema e un errore di intervallo mancante.
Il codice ora è simile al seguente:
( Tabella dati corrente ( ) < < Filtro dati (
Modalità ( Spettacolo ( 1 ) , Includere ( 1 ) ) ,
Inverso ( 0 ) ,
invisibile ,
Aggiungi filtro (
colonne ( : Bene ) ,
Dove (: Bene =={0,1} ) ) ));
un errore dice che manca l'intervallo. Esiste una funzione in cui posso impostare l'intervallo di una colonna o di una variabile?
Ho elencato tutte le mie colonne nell'elemento "Colonne" e ho istruzioni "Where" separate per tutte le mie colonne che voglio filtrare.
Ri: Creare un'istruzione IF che consenta più output di risultatiDi seguito è riportato un esempio preso direttamente dallo Scripting Index.Mostra la sintassi per la selezione da più colonne.Tieni presente che tutte le colonne da selezionare devono essere elencate nell'elemento "Colonne" e che la clausola where deve essere impostata separatamente per ciascuna colonna
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"} )
);