存在しない列を含む可能性のあるリストに基づいて列サブセットを作成するこんにちはユーザー、
このトピックに関連する以前のディスカッションを読みましたが、すべての答えが見つかりませんでした。
指定された列のリストに基づいて列サブセットを作成する方法を知りたいのですが。 サブセット化するデータテーブルに特定のリストの列が存在する場合、これを簡単に実行できることを私は知っています。
私が知りたいのは、リスト内の特定の列が存在しない場合に、「「不正な引数」のアクセスまたは評価で列が見つかりません」というエラーが発生しないように、スクリプトを堅牢にする方法です。
たとえば、以下のスクリプトでは、列、名前、年齢、身長が存在するため、「Big Class.jmp」のサブセットを作成できるようにしたいのですが、スクリプトは、指定されたリストに存在する列は、noneと呼ばれます。
コードの周りにTry()を配置しようとしましたが、成功しませんでした。
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" )
);
「」
ありがとう、
サイモン
データ表スクリプティングRe:存在しない列を含む可能性のあるリストに基づいて列サブセットを作成するこれを処理する簡単な方法は次のとおりです。cols_of_interestリストの各列がデータテーブルに存在するかどうかを確認するだけで、存在しない場合はcols_of_interestリストから削除されます。
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>Re:存在しない列を含む可能性のあるリストに基づいて列サブセットを作成する<< intersectを使用して、両方のリストに存在する列を判別する方法は次のとおりです。
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" ) );