列のリストに基づいてデータのサブセットを作成するこんにちは、
多数のデータ列を含む大きなデータ ファイルがあります。 列のリストに基づいて生データをサブセット化する自動化された方法を作成したいと考えています。
このテーブルが生データの場合
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 |
| # | # | # | # | # | # | # | # | # | # |
| # | # | # | # | # | # | # | # | # | # |
サブセット化したい列のリストは [1,4,6,9] になる可能性があります
次のような新しいテーブルを生成したい
どの列を取得するかをハードコーディングすることができない理由は、リストが頻繁に更新されるため、これをよりハンズフリーで処理する方法が必要だからです。
さらに詳しい情報を提供する必要がある場合は、お知らせください。
ありがとう!
Re: 列のリストに基づいてデータのサブセットを作成するeval(evalexpr(
SubTable3[i] = Tables[i] << subset( selected rows(1), columns(
As Column(expr(MT_Col_Names[1])), As Column(expr(MT_Col_Names[2])) ), Invisible);
));
Re: 列のリストに基づいてデータのサブセットを作成するたぶん試してみてください
eval(evalexpr((
SubTable3[i] = Tables[i] << subset( selected rows(1), columns(
As Column(expr(MT_Col_Names[1])), As Column(expr(MT_Col_Names[2])) ), Invisible);
));
))
Re: 列のリストに基づいてデータのサブセットを作成するMT_Col_Names にあるすべての項目を列挙したり、それらを Column() で囲んだりする必要はないと思います。「MT_Col_Names」にはどのような種類のデータが含まれていますか?
以下は、保持したい列の名前を表す文字列のリストを含む実際の例です。
dt = Open("$SAMPLE_DATA/Big Class.jmp");
dt << Select Rows({1,2,3});
sub_cols = {"name", "age", "sex"}; //same role as MT_Col_Names
dt2 = dt << Subset(selected rows(1), columns(sub_cols));Re: 列のリストに基づいてデータのサブセットを作成するこんにちは、
以下を使用すると、これは機能しません。
SubTable3[i] = Tables[i] << subset( selected rows(1), columns(Column(MT_Col_Names[1]), Column(MT_Col_Names[2]), Column(MT_Col_Names[3]), Column(MT_Col_Names[4]), Column(MT_Col_Names[5]), Column(MT_Col_Names[6])), Invisible);
エラーは次のとおりです。

そして、私が変更した場合列」に「列として」 , 動作しますが(エラーはありません)、すべての列が表示されます...
助けてくれてありがとう、
ニル
Re: 列のリストに基づいてデータのサブセットを作成するこれはおそらく非常に簡単ですが、あなたのリストについて混乱しています。どの列を使用するかは変更されるためハードコーディングできないとのことですが、リストが更新されたときに使用する列を最終的に列挙する必要はないのでしょうか?そうでなければ、そのリストはどこから来たのでしょうか? スクリプトの先頭に、使用するすべての列を列挙する変数がある場合、それは保守が十分に簡単ですか?そうであれば、それを行う簡単なスクリプトを次に示します。
//list of columns
subset_cols = {:Name("1"), :Name("4"), :Name("6"), :Name("9")};
dt = Current Data Table();
dt << Subset( All rows, columns( subset_cols ) )