選択した列を除外こんにちは、
ソースからさまざまな列のリストを取得し、データ テーブルでこれらの列を選択します。 データテーブルには他にも多くの列がありますが、スクリプトの実行中に分析を行っているときに、提供されたリストにない列を非表示/除外したい...
以下の行で必要のないすべての列を選択できます。
dt < <列の選択を反転 (Provided_List)
次のステップ: これらの選択した列を除外します。 それ、どうやったら出来るの?
スクリプトの本から、私は見ることができます列 ("X") << 除外 (1) Xという名前の列を除外しますが、すでに選択されている列を除外する方法はありますか?
ありがとう。
Re: 選択した列を除外するこれは、連想配列がキーと値のペアを保存するためであり、ほとんどの場合、連想配列で列の選択を直接使用すると、実際には何をすべきかわからないためです。 通常は何も選択すべきではなく、それを反転するとすべての列が選択されます (連想配列が 1 と評価されて最初の列が選択される場合があります)。
連想配列からキーを取得するには、 << get keys を使用できます。
Names Default To Here(1);
cols_list = {"Col A", "Col B"};
cols_aa = Associative Array({"Col A", "Col B"});
Show(cols_list);
Show(cols_aa);
Show(cols_aa << get keys);
連想配列の詳細については、JMP ヘルプ ページを参照してください。スクリプト ガイド > データ構造 > 連想配列. この場合、集合操作のためにそれらを使用した可能性があります
Re: 選択した列を除外するjthiさん、お返事ありがとうございます!それは速かった!
今あなたの返事を見ました。 私はさまざまなことを試してきましたが、非常に単純な 2 行のソリューションを思いつきました。
cols = {"Col A", "Col B"};
dt << Select Columns(cols) << Invert Column Selection;連想配列が使用されているのを見たことがありません。現在の列の代わりに連想配列を使用しようとすると、[列の選択] は列に含まれていない列を選択しましたが、反転選択の 1 つに過ぎませんでした。 変。それがなぜなのか知っていますか?
cols = Associative Array({"Col A", "Col B"});
dt << Select Columns(cols) << Invert Column Selection;Re: 選択した列を除外するfor ループでは、N Items(dt) の代わりに N Items(col_names) を使用する必要があります。
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
col_names = {"age", "sex", "weight"};
for( i = 1, i <= N Items(col_names), i++,
Column( dt, col_names[i] ) << set selected;
);
dt << Invert Column Selection;
また、列の選択を使用してコードを簡単にすることもできます
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
col_names = {"age", "sex", "weight"};
wait(1); // for demo purposes
dt << Select Columns(col_names);
wait(1); // for demo purposes
dt << Invert Column Selection;
正しい列を直接選択することで反転を回避することもできますが、理解しにくい可能性が高くなります
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
col_names = Associative Array({"age", "sex", "weight"});
all_col_names = Associative Array(dt << Get Column Names("String"));
all_col_names << Remove(col_names);
dt << Select Columns(all_col_names << get keys);Re: 選択した列を除外するこのスレッドを復活させて申し訳ありませんが、同じ質問があり、このようなアプローチが機能するかどうか、およびそれを改善する方法を教えてください:
//List of wanted columns<BR />col_names = (":Col A", ":Col B", etc);
<BR />//Iterates through list and uses the string names to identify and select
for( i = 1, i <= N Items(dt), i++,
Column( dt, col_names[i] ) << set selected
);
dt << Invert Column Selection</CODE></P></LINGO-BODY><LINGO-SUB id="lingo-sub-73693" slang="en-US" mode="NONE">Re: 選択した列を除外する</LINGO-SUB><LINGO-BODY id="lingo-body-73693" slang="en-US" mode="NONE"><P>ありがとう!!! 私もそれを理解しましたが、それは少し長かったです。 これは完璧です :)</P></LINGO-BODY><LINGO-SUB id="lingo-sub-73657" slang="en-US" mode="NONE">Re: 選択した列を除外する</LINGO-SUB><LINGO-BODY id="lingo-body-73657" slang="en-US" mode="NONE"><P>これを行う方法の構文は次のとおりです。</P>
<PRE><CODE class=" language-jsl">Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
Column( dt, 4 ) << set selected( 1 );
Column( dt, 5 ) << set selected( 1 );
selcols = dt << get selected columns;
For( i = 1, i <= N Items( selcols ), i++,
Column( dt, selcols[i] ) << exclude( 1 )
);