Condizionale Seleziona dove<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Ho il codice JSL seguente per selezionare e sottoimpostare i dati in cui sono presenti meno di 25 righe per "tag", salvare il sottoinsieme e rimuovere il sottoinsieme dal set di dati di lavoro principale. Funziona bene dove sono presenti tag con meno di 25 righe, ma ho bisogno che sia robusto e funzioni dove non ci sono tag con meno di 25 righe, nel qual caso dovrebbe ignorare le righe 4-6 e continuare alla riga 7 per salvare il set di dati di lavoro principale con un nuovo nome. Come posso raggiungere questo obiettivo?
Grazie molto
1 Apri("dati.jmp");
2 dt=tabella dati corrente() << Riepilogo( Gruppo( :tag ) );
3 Tabella dati( "dati per (tag)" ) << Seleziona dove( :N righe < 25) << Ordina( per( :N righe ), Ordine( crescente ), Nome tabella di output("summary_of_small_n"));
4 Tabella dati( "dati" ) << Sottoinsieme((Righe selezionate), Nome tabella di output("sub_small_n"));
5 Tabella dati( "sub_small_n" ) << save("sub_small_n.jmp");
6 Tabella dati( "summary_of_small_n" ) << save("summary_of_small_n.jmp");
7 Tabella dati( "data" ) << cancella righe << save("data_less_small_n.jmp");
Ri: Condizionale Seleziona doveDopo aver provato ancora un po', quanto segue sembra funzionare per me. Grazie per l'aiuto.
Apri("dati.jmp");
dt = tabella dati corrente() << Riepilogo (Gruppo (:tag));
Tabella dati ("dati per (tag)") << Seleziona dove (: N righe < 25) << Ordina (per (: N righe), Ordine (ascendente), Nome tabella di output ("summary_of_small_n_tag"));
Tabella dati( "summary_of_small_n_tag" ) << save("summary_of_small_n_tag.jmp");
num_selezionato = nrows(dt << ottieni le righe selezionate);
if(num_selezionato(dt > 0),
// Se la condizione è soddisfatta, fai così...
Tabella dati( "dati" ) << Sottoinsieme((Righe selezionate), Nome tabella di output("sub_small_n"));
Tabella dati( "sub_small_n" ) << save("sub_small_n.jmp");
Tabella dati( "data" ) << cancella righe << save("data_less_small_n.jmp");
,
// Altrimenti fai così...
Tabella dati( "dati" ) << salva(" data_less_small_n.jmp ");
);
Ri: Condizionale Seleziona dove@rijking
Basandosi solo sul punto (a): forse provare una selezione invertita funzionerebbe? L'hai provato ?Se non funziona, puoi suggerire una tabella di dati di esempio dalla Libreria dati di esempio che si adatta al tuo problema in modo che io possa provare a riprodurre il problema per provare ad aiutarti?
Migliore
Uday
Ri: Condizionale Seleziona doveIan, grazie. Questo non funziona del tutto come:
a) Devo fare riferimento al numero di selezionato righe (piuttosto che le righe totali su cui, a quanto mi risulta, funziona NRow) - perché dt2 riassume il numero totale di righe per tutti i tag, non solo quelli <25.
b) Se si fa riferimento alle righe selezionate in dt2, penso che debba essere > 0 anziché > 24 - perché dt2 riassume il numero totale di righe per tutti i tag, quindi sono interessato a tutte le righe selezionate (anche se ce n'è solo una ; ciò equivarrebbe a riassumere un tag che appare su meno di 25 righe nel dt sottostante).
Eventuali altri suggerimenti sarebbero molto apprezzati. Grazie.
Ian@JMP wrote:You need to use the 'NRow()' function in combination with an 'If()' expression. Something like:Open( "data.jmp" );dt = current data table() << Summary( Group( :tag ) );dt2 = Data Table( "data By (tag)" ) << Select Where( :N Rows < 25) << Sort( By( :N Rows ), Order( Ascending ), Output Table Name("summary_of_small_n"));if( NRow(dt2 > 24, // If the condition is satisfied, do this . . . Data Table( "data" ) << Subset(( Selected Rows ), Output Table Name("sub_small_n")); Data Table( "sub_small_n" ) << save("sub_small_n.jmp"); Data Table( "summary_of_small_n" ) << save("summary_of_small_n.jmp") , // Else do this . . . Data Table( "data" ) << delete rows << save("data_less_small_n.jmp"); );
Ri: Condizionale Seleziona doveÈ necessario utilizzare la funzione 'NRow()' in combinazione con un'espressione 'If()'. Qualcosa di simile a:
Aprire ( "dati.jmp" ) ;
dt = tabella dati corrente () << Riepilogo ( Gruppo ( : etichetta ) ) ;
dt2 = Tabella dati ( "dati per (tag)" ) << Seleziona Dove ( : N righe < 25 ) << Ordinare ( Di ( : N righe ) , Ordine ( Ascendente ) , Nome della tabella di output ( "riepilogo_di_piccolo_n" )) ;
Se (
NRow ( dt2 > 24 ,
// Se la condizione è soddisfatta, esegui questa operazione. . .
Tabella dati ( "dati" ) << Sottoinsieme (( Righe selezionate ) , Nome della tabella di output ( "sub_small_n" )) ;
Tabella dati ( "sub_small_n" ) << salva ( "sub_small_n.jmp" ) ;
Tabella dati ( "riepilogo_di_piccolo_n" ) << salva ( "riepilogo_di_piccolo_n.jmp" )
,
// Altrimenti fai così. . .
Tabella dati ( "dati" ) << eliminare righe << salva ( "data_less_small_n.jmp" ) ;
) ;