Hallo Benutzer,
Ich habe eine frühere Diskussion zu diesem Thema gelesen, aber nicht alle Antworten gefunden.
Ich würde gerne wissen, wie man eine Spaltenteilmenge basierend auf einer bestimmten Spaltenliste erstellt. Ich weiß, dass Sie dies leicht tun können, wenn die Spalten in der angegebenen Liste in der Datentabelle vorhanden sind, die Sie unterteilen möchten.
Was ich wissen möchte, ist, wie man das Skript robust macht, damit es nicht die Fehlermeldung „Spalte beim Zugriff oder bei der Auswertung von ‚Bad Argument‘ nicht gefunden“ ausgibt, falls eine bestimmte Spalte in der Liste nicht existiert.
In meinem Skript unten möchte ich beispielsweise immer noch in der Lage sein, eine Teilmenge von „Big Class.jmp“ mit Spalten, Namen, Alter und Höhe zu erstellen, weil sie existieren, aber mein Skript bricht so zusammen, wie es ist, weil ich eine nicht- Vorhandene Spalte in der angegebenen Liste mit dem Namen „Keine“.
Ich habe versucht, Try() um den Code zu setzen, aber ohne Erfolg.
cols_of_interest = {:name, :age, :height, :none};
show(cols_of_interest);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
big_class_cols = dt << Get Column Names();
show(big_class_cols);
subDt1 = dt << Subset(
Columns( cols_of_interest ),
Output Table Name( "Big Class 2" )
);
"
Danke,
Simon
Hier ist eine Möglichkeit, mit <
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
cols_of_interest = {name, age, height, none}; //names without scoping colon
AA1 = Associative Array( dt << Get Column Names() );
AA2 = Associative Array( cols_of_interest );
cols = AA2 << intersect( AA1 ) << get keys;
subDt1 = dt << Subset( Columns( cols ), Output Table Name( "Big Class 2" ) );
Hier ist eine einfache Möglichkeit, damit umzugehen.Es prüft lediglich, ob jede Spalte aus der Liste „cols_of_interest“ in der Datentabelle vorhanden ist. Wenn nicht, wird sie aus der Liste „cols_of_interest“ entfernt.
names default to here(1);
cols_of_interest = {:name, :age, :height, :none};
show(cols_of_interest);
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
For(i=nitems(cols_of_interest), i>=1, i--,
if(try(column(dt,char(cols_of_interest[i]))<<GET name=""></GET>