filtro dati per loop IICiao,
Ho una tabella di dati che viene aggiornata (nello script originale tramite query) ad esempio ogni 5 s e sarà aggiunta ad un'altra tabella. Fin qui tutto bene. Come posso ottenere che la selezione non venga cancellata dopo ogni iterazione?
Names Default To Here(0);
dt0 = New table ("Test",
New Column( "name", Character,"Nominal"),
New Column( "age", numeric, continuous),
New Column("sex", Character,"Nominal"),
New Column("height", numeric, continuous),
New column("weight", numeric, continuous,));
df = dt0 << Data Filter(
Add Filter( Columns( :sex ) )
);
n=0;
e=10;
startwork = Function( {},
dt1=Open( "$sample_data/big class.jmp");
dt0 << Concatenate( current data table(), "Append to First Table");
n+=1;
Close (dt1, nosave);
if(n<E></E>Sarebbe bello se la mia selezione fosse valida per la tabella e il grafico dei dati dopo ogni iterazione fino a quando la sezione non verrà modificata dall'utente.
Grazie molto!
Re: filtro dati per loop IINel caso in cui implementi lo script in un ciclo (come la prima domanda), la selezione è valida solo in base ai numeri di riga. Ho bisogno della selezione in base alla selezione della colonna. Per quello ho trovato una soluzione possibile:
Costruisci una lista e usa questa selezione per la tabella:
Names Default To Here(0);
dt0 = New table ("Test",
New Column( "name", Character,"Nominal"),
New Column( "age", numeric, continuous),
New Column("sex", Character,"Nominal"),
New Column("height", numeric, continuous),
New column("weight", numeric, continuous,));
List={"F","M"};
gb=new window("Choice",
LB1=List Box(List, width(150), maxSelected(5), nlines(1))
);
n=0;
e=10;
startwork = Function( {},
dt1=Open( "$sample_data/big class.jmp");
Choice=LB1 << get selected;
dt0 << Concatenate( current data table(), "Append to First Table");
dt0 << Select Where( Contains( Choice, :sex ) );
n+=1;
Close (dt1, nosave);
if(n<E></E>Mille grazie per le vostre risposte, ho imparato comandi molto utili!
Re: filtro dati per loop IIEcco un approccio leggermente diverso. Utilizza il messaggio << Ricevi script dal filtro dati "Test", quindi esegue una leggera modifica e quindi la applica alla tabella di dati della classe grande. Il tutto viene attivato dal gestore delle modifiche del filtro applicato al filtro dei dati sulla tabella dei dati del test.
Names Default To Here( 0 );
dt1 = Open( "$sample_data/big class.jmp" );
dt0 = New Table( "Test",
New Column( "name", Character, "Nominal" ),
New Column( "age", numeric, continuous ),
New Column( "sex", Character, "Nominal", Values( {"F", "M", "F", "M", "F", "M", "F", "M"} ) ),
New Column( "height", numeric, continuous ),
New Column( "weight", numeric, continuous, )
);
df0 = dt0 << Data Filter( Add Filter( Columns( :sex ), /* variable get where selection df0*/ ) );
f = Function( {a},
dschar = Char( df0 << get script );
Try( df1 << close );
dschar = "df1 = dt1 " || Substr( dschar, 21 );
Eval( Parse( dschar ) );
Try( df1 << close );
);
rs = df0 << Make Filter Change Handler( f );
Si consiglia inoltre di esplorare la possibilità di creare sottoinsiemi della tabella di dati principale o di creare una tabella di dati di riepilogo dalla tabella principale e di utilizzare l'opzione su "Collega a tabella originale". È quindi possibile inserire un filtro di dati nella tabella di dati sottostanti o riepilogati e replicherà automaticamente le modifiche nella tabella originale.
Re: filtro dati per loop IIGrazie per la tua risposta. Sfortunatamente non sono riuscito a ottenere il suggerimento dalla Guida ==> Scripting Index ==> Filtro dati ..........
Ho provato più opzioni ma nulla funziona.
Come posso ottenere la clausola where o l'argomento where come variabile da df0 e metterla nel df1 come argomento?
Ho trovato la clausola << get where ma questo è solo un formato di testo ...
Names Default To Here(0);
dt0 = New table ("Test",
New Column( "name", Character,"Nominal"),
New Column( "age", numeric, continuous),
New Column("sex", Character,"Nominal", Values({"F", "M", "F", "M", "F", "M", "F", "M"})),
New Column("height", numeric, continuous),
New column("weight", numeric, continuous,));
df0 = dt0 << Data Filter(
Add Filter( Columns( :sex ),/* variable get where selection df0*/ )
);
dw0 = df0 << get where clause;
dt1=Open( "$sample_data/big class.jmp");
df1 = dt1 << Data Filter(
Add Filter( Columns( :sex) /* set where selection from df0*/ )Re: filtro dati per loop IIPrima dell'aggiornamento, suggerisco di recuperare la clausola Where dal filtro dati, quindi di eseguire l'aggiornamento e quindi di riapplicare la clausola Where recuperata.
Vedere
Aiuto ==> Scripting Index ==> Filtro dati ..........
per dettagli ed esempio