Hallo Benutzer,
Ich habe eine vorherige Diskussion zu diesem Thema gelesen, aber nicht alle Antworten gefunden.
Ich möchte wissen, wie eine Spaltenuntermenge basierend auf einer bestimmten Liste von Spalten erstellt wird. 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 Sie das Skript robust machen, damit es nicht den Fehler gibt, dass "Spalte beim Zugriff oder bei der Auswertung von 'Bad Argument' nicht gefunden wurde, falls eine bestimmte Spalte in der Liste nicht vorhanden ist.
In meinem folgenden Skript möchte ich beispielsweise weiterhin eine Teilmenge von "Big Class.jmp" mit Spalten, Namen, Alter und Höhe erstellen können, da diese vorhanden sind. existierende Spalte in der angegebenen Liste genannt, keine.
Ich habe versucht, Try () um den Code zu setzen, aber keinen 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" )
);
""
Vielen Dank,
Simon
Hier ist eine einfache Möglichkeit, damit umzugehen.Es wird lediglich überprüft, ob jede Spalte aus der Liste cols_of_interest in der Datentabelle vorhanden ist. Andernfalls 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>So können Sie <
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" ) );