JMP-Datentabelle mit JSL abfragenHallo,
Ich benötige in Big Class.jmp eine Liste eindeutiger Namen für die 12- und 13-Jährigen
Mein derzeitiger Weg scheint sehr ineffizient zu sein. (Wählen Sie Wo, Teilmenge...)
Wie geht das mit Query();
Danke.
Mein Skript ist:
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
AgeList = {13, 15};
dt << Select where( Contains( AgeList, :Age ) > 0 );
SubsetDt = dt << Subset( Selected Rows, Columns( "name" ) );
Summarize( SubsetDt, DistinctNames = By( :(1) ) );
Close( SubsetDt, nosave );
Show( DistinctNames );Betreff: JMP-Datentabelle mit JSL abfragenVielen Dank, das ist genau das, was ich brauche.
Betreff: JMP-Datentabelle mit JSL abfragenDanke, Jim, @txnelson .
@tom_abramov , es gibt mehrere Möglichkeiten, dies zu tun. Da Sie das Wort „Abfrage“ verwendet haben, vermutete ich, dass Sie möglicherweise einen komplexeren SQL-Typ auswählen, also habe ich die JMP-Funktion „query()“ verwendet.Nachfolgend finden Sie eine einfache Methode, die keine SQL-Syntax erfordert. Ein assoziatives Array ist eine Liste mit Schlüsseln, und die Schlüssel müssen eindeutig sein.:name[idx] erzeugt eine Liste aller Zeilen mit 12-, 13- und 15-Jährigen. Das assoziative Array verfügt nur über eindeutige Namen mit dem zugehörigen Wert 1. Die eindeutigen Namen sind die Schlüssel des assoziativen Arrays.
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class.jmp", invisible );
AgeList = {12, 13, 15};
idx = dt << get rows where(Contains(Agelist,:age));
uniq_names = Associative Array( :name[idx] ) <<GET keys=""></GET>
Betreff: JMP-Datentabelle mit JSL abfragenDas Erstellen einer Datentabelle durch die Abfrage stellt eigentlich kein Hindernis dar.Das folgende Skript ist eine einfache Modifikation des vorherigen Skripts, mit der Hinzufügung, dass der Inhalt der Spalte „Name“ aus der endgültigen Datentabelle in eine Liste verschoben und anschließend die Datentabelle gelöscht wird.Für jeden, der das Skript ausführt, werden niemals Datentabellen angezeigt.
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class.jmp", invisible );
AgeList = {12, 13, 15};
_xx = Words( Char( AgeList ), "{}" )[1]; //convert to a comma delimited text and remove braces {}
ndtQ = Query( Table( dt, "t1" ),invisible, Eval Insert( "SELECT DISTINCT name From t1 WHERE age IN (^_xx^)" ) );
namesList = ndtQ:Name << get values;
Close( dt, NoSave );
close(ndtQ, nosave);Betreff: JMP-Datentabelle mit JSL abfragenEs ist sehr hilfreich, danke.
Ich verwende JMP 15.
Noch eine Frage: Kann ich das Ergebnis der Abfrage direkt in der Liste speichern, anstatt eine Datentabelle zu erstellen?
Das liegt daran, dass ich die Tabelle nicht brauche, sondern eine Liste mit eindeutigen Namen.
Wenn nicht, ist es immer noch viel besser als Select Where --> Subset.
Danke.
Betreff: JMP-Datentabelle mit JSL abfragen@tom_abramov ,
Sie haben nicht erwähnt, welche JMP-Version Sie verwenden.Ich kann mich nicht erinnern, ob die JMP-Query()-Funktion erstmals in JMP 12 oder 13 verfügbar war. Sie können Standard-SQL-Anweisungen für JMP-Tabellen verwenden.Da Big Class nur einen nicht eindeutigen Namen hat, Robert, für einen 12- und 15-Jährigen, habe ich Ihre Anfrage für 12-, 13- und 15-Jährige geändert.
Names Default To Here( 1 );
dt = Open( "$Sample_Data/Big Class.jmp", invisible );
AgeList = {12, 13, 15};
_xx = Words( Char( AgeList ), "{}" )[1]; //convert to a comma delimited text and remove braces {}
ndtQ = Query( Table( dt, "t1" ), Eval Insert( "SELECT DISTINCT name From t1 WHERE age IN (^_xx^)" ) );
ndtQ << set name( "Unique BC Names" );
Wait( 3 );
Close( dt, NoSave );
Hier ist das Ergebnis:
