Ciao,
Sono ancora un principiante, spero di progredire con questo problema!
Ho una colonna ricorrente denominata "median_range_mm", quindi "median_range_mm 2" quindi "median_range_mm 3 ..."
E una colonna associata chiamata "target_status" quindi "target_status_2" .....
Vorrei tracciare una distribuzione continua con tutte le distanze mediane 1, 2, 3 ... sulla stessa finestra MA voglio filtrare tutta la cella da un intervallo mediano che ha uno stato target diverso da 5.
Spero di essere chiaro. Questo il codice, Non so come scrivere la condizione del filtro per lo stato della destinazione in un ciclo "per".
dt = Current Data Table();
/renaming columns<BR />For( i = 1, i <= 716, i++,<BR /> For( j = 0, j <= 65, j++,<BR /> If(<BR /> i == 1, Column( i ) << set name( "EVENT_BEGIN_OF_CAPTURE" ),<BR /> i == 10, Column( i ) << set name( "Temperature" ),<BR /> i == 16 + 11 * j, Column( i ) << set name( "target_status" ),<BR /> i == 17 + 11 * j, Column( i ) << set name( "median_range_mm" ),<BR /> )<BR /> )<BR />)<BR /><BR />
// for the first ranging column
valMax = Max( :Temperature[dt << get rows where( :target_status == 5 )] ); //max selection
For( d = 3, d <= N Rows( dt ), d++,
val1 = Column( "Temperature" )[d];
val2 = Column( "Temperature" )[d + 1];
dt << select where( val2 - val1 <= 0.1 * valMax ); //stability
);
// plot of the first ranging
New Window( "Only plot median range with a stable temperature",
H List Box(
Distribution(
Uniform Scaling( 1 ),
Continuous Distribution(
Column( :median_range_mm ),
Show Percents( 1 ),
Show Counts( 1 ),
Customize Summary Statistics( Minimum( 1 ), Maximum( 1 ), Median( 1 ), Set Alpha Level( 0.05 ) ),
/* it is the first column so I can write : "target_status" to call the column */ <BR /><FONT face="arial black,avant garde" color="#FF9900"><STRONG> Local Data Filter( Add Filter( columns( :target_status ), Where( :target_status == 5 ) ) );</STRONG></FONT>
)
);
<BR />// looking for the first max value of the ranging
maxValue = Max( :median_range_mm[dt << get rows where( :target_status == 5 )] );
minValue = Min( :median_range_mm[dt << get rows where( :target_status == 5 )] );
// Then look on the others columns
For( p = 2, p <= 64, p++,
nom = "median_range_mm " || Char( p ); // look at ranging median_range_mm 1, 2, 3 ...
col = Column( nom );
name = "target_status " || Char( p ); // look at target status associated
tgt = Column( name );
//dt << get rows where( Column( name ) == 5); // doesn't work
<STRONG> maxValueVar = Max( Column( nom )[dt << get rows where( Column( name ) == 5 )] );
minValueVar = Min( Column( nom )[dt << get rows where( Column( name ) == 5 )] );</STRONG>
If(
maxValueVar > maxValue, maxValue = maxValueVar,
minValueVar < minValue, minValue = minValueVar
);
);
For( g = 2, g <= 64, g++,
nom = "median_range_mm " || Char( g );
col = Column( nom );<BR /> /* there is difficutie*/<BR /><FONT face="arial black,avant garde" color="#FF9900"><STRONG> name = "target_status " || Char( g );
tgt = Column( name );</STRONG></FONT>
valueMax = Max( :Temperature );
For( h = 3, h <= N Rows( dt ), h++,
value1 = Column( "Temperature" )[h];
value2 = Column( "Temperature" )[h + 1];
dt << select where( value2 - value1 <= 0.1 * valueMax ); // this is for a plot with a stable temperature
);
Distribution(
Uniform Scaling( 1 ),
Continuous Distribution(
Column( col ),
Show Percents( 1 ),
Show Counts( 1 ),
Customize Summary Statistics( Minimum( 1 ), Maximum( 1 ), Median( 1 ), Set Alpha Level( 0.05 ) ),<BR /> /* there is the difficultie*/<BR /> /* I don't want to call all the columns " target_status 2 , 3 , 4 .... */ <BR /><FONT face="arial black,avant garde" color="#FF9900"><STRONG> Local Data Filter(
Add Filter( columns( Column( tgt ), Where( Column( tgt ) == 5 ) ) );</STRONG></FONT>
)
)
);
);
)
);
Saluti
Alcune idee generali ...
Innanzitutto, penso che il filtro dei dati sia un dispositivo meraviglioso quando si richiede la manipolazione interattiva degli stati delle righe. Sembra che nel tuo caso, però, gli stati delle righe siano controllati invece dai cicli espliciti, quindi dovrei manipolare direttamente gli stati delle righe con lo script, non con un filtro.
In secondo luogo, è possibile utilizzare qualsiasi espressione booleana come argomento del messaggio della tabella dati << Selezionare Dove (Booleano). Segui questo messaggio con il messaggio << Escludi. Lo stato della riga determinerà che la tua piattaforma (Distribuzione, ad esempio), non includerà queste osservazioni.
Terzo, il messaggio di avvio della piattaforma può includere un argomento Where (Boolean) che potrebbe essere utile in questo problema.
Infine, non sono sicuro dello scopo dei due loop all'interno della funzione New Window (). Probabilmente è meglio spostarli al di fuori della funzione e usare il messaggio Append () per aggiungere più piattaforme alla finestra.