Datenfilter für Schleife IIHallo,
Ich habe eine Datentabelle, die (im Originalskript per Abfrage) zB alle 5s aktualisiert wird und auf eine andere Tabelle gesetzt wird. So weit, ist es gut. Wie kann ich erreichen, dass die Auswahl nach jeder Iteration nicht gelöscht wird?
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>Es wäre großartig, wenn meine Auswahl nach jeder Iteration für die Datentabelle und das Diagramm gültig ist, bis der Abschnitt vom Benutzer geändert wird.
Danke vielmals!
Re: Datenfilter für Schleife IIFür den Fall, dass ich das Skript in eine Schleife implementiere (wie die erste Frage), ist die Auswahl nur basierend auf den Zeilennummern gültig. Ich brauche die Auswahl anhand der Spaltenauswahl. Dafür habe ich einen möglichen Workaround gefunden:
Erstellen Sie ein Listenfeld und verwenden Sie diese Auswahl für die Tabelle:
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>Vielen Dank für Ihre Antworten, ich habe sehr nützliche Befehle gelernt!
Re: Datenfilter für Schleife IIHier ist ein etwas anderer Ansatz. Es verwendet die << Get Script-Nachricht aus dem Datenfilter "Test", nimmt dann eine geringfügige Änderung vor und wendet sie dann auf die Datentabelle Big Class an. Das Ganze wird durch den Filter Change Handler ausgelöst, der auf den Datenfilter in der Testdatentabelle angewendet wird.
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 );
Vielleicht möchten Sie auch die Möglichkeit untersuchen, Ihre Hauptdatentabelle zu subsetieren, oder eine Übersichtsdatentabelle aus Ihrer Haupttabelle erstellen und die Option "Link to Origin Table" verwenden. Sie können dann einen Datenfilter für die subsettierte oder zusammengefasste Datentabelle platzieren. Die Änderungen werden automatisch in der Originaltabelle repliziert.
Re: Datenfilter für Schleife IIDanke für deine Antwort. Leider konnte ich den Hinweis nicht aus der Hilfe herausfinden ==> Skriptindex ==> Datenfilter ..........
Ich habe mehrere Optionen ausprobiert, aber nichts funktioniert.
Wie kann ich die where-Klausel oder das where-Argument als Variable von df0 erhalten und als where-Argument in die df1 setzen?
Ich habe die << wo-Klausel gefunden, aber dies ist nur ein Textformat ...
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: Datenfilter für Schleife IIIch empfehle vor dem Update, dass Sie die Where-Klausel aus dem Datenfilter abrufen, dann das Update durchführen und dann die abgerufene Where-Klausel erneut anwenden.
Sehen
Hilfe ==> Skriptindex ==> Datenfilter ..........
für Details und Beispiel