データフレームで、列名を含む別の列に基づいて列をフィルターするこんにちは皆さん
データ セットを添付しました。データ セットには、データ セット内の列の名前を含む Parameter という列があります。まず、Parameter 列にある各一意の列名に対応する列をフィルターし、次に作成したサブセット列に結合して変動グラフを作成したいと思います。現時点では、Parameter 列に 2 つの一意のパラメーターがあり、これは週ごとに変化する可能性があるため、パラメーター化したいと思います。以下に、作成したコードの一部を示します。ご協力いただければ幸いです。
ありがとう
ピオ
dt_2 = データテーブル( "jmp_question_T_V0" ) << 概要(
グループ( :パラメータ )、
頻度(「なし」)、
重量(「なし」)
);
lst = 列(dt_2,1) << GetAsMatrix();
close(dt_2、保存なし);
サブセット列 = {:名前("PRA"), :名前("WA"), :名前("CH"), :名前("WA_D"),
:Name("CH_D"),:Name("SL_T"),:Name("TST_DATE"),:Name("IL_M"),:Name("QTY"),
:Name("W"),:Name("パラメーター"),:Name("h_t_d")};
長さ(lst)
iparam = 1
while(iparam=length(lst)) {
print(lst[iparam])
dt=dt_1
dt_1 << select where (:Parameter == lst[iparam]) //動作します
dt<
dt<< サブセット(すべての行、列(subset_cols))
dt_param<
自動化とスクリプトデータの探索と視覚化
Re: データフレームで、列名を含む別の列に基づいて列をフィルターする提供されたスクリプトは、; が欠落しており、while ループの構文が正しくないため、機能しません。文字列から一意の値を取得する場合は、要約テーブル、要約関数、または連想配列を使用できます。提供されたのは .csv ファイル 1 つだけなので、何をしたいのか正確にはわかりません。
Names Default To Here(1);
dt = Current Data Table();
params = Associative Array(Column(dt, "Parameter")) << get keys;
パラメータ列に基づいて個別のサブセットを作成したい場合は、それを列ごとのサブセットとして使用できます。

Names Default To Here(1);
dt = Current Data Table();
mycols = {"W", "W_s", "R_rd1", "R_rd1_s"};
dt_subsets = dt << Subset(By(:Parameter), Selected Rows(0), Columns(mycols));
またはループ
Names Default To Here(1);
dt = Current Data Table();
params = Associative Array(Column(dt, "Parameter")) << get keys;
mycols = {"W", "W_s", "R_rd1", "R_rd1_s"};
dts = {};
For Each({param}, params,
cur_rows = dt << get rows where(:Parameter == param);
dt_subset = dt << Subset(Rows(cur_rows), Selected Rows(0), Columns(mycols));
Insert Into(dts, dt_subset);
);
行を選択することもできますが、通常は必要ありません。
Re: データフレームで、列名を含む別の列に基づいて列をフィルターするこんにちは、ジティさん
ご返信ありがとうございます。私が求めているのはこれです。つまり、パラメータに S_rd2_iqr がある場合、スクリーンショットに示すように列 S_rd2_iqr のみをフィルターしたいのです。パラメータに S_rd2 がある場合、スクリーンショットに示すように列 S_rd2 のみをフィルターしたいのです。これらのパラメータは毎回変わるので、パラメータ化したいのです。

Re: データフレームで、列名を含む別の列に基づいて列をフィルターするこんな感じでしょうか?
Names Default To Here(1);
dt = Current Data Table();
params = Associative Array(Column(dt, "Parameter")) << get keys;
dts = {};
For Each({param}, params,
cols_to_subset = {"Parameter"};
Insert Into(cols_to_subset, param);
cur_rows = dt << get rows where(:Parameter == param);
dt_subset = dt << Subset(Rows(cur_rows), Selected Rows(0), Columns(cols_to_subset), Output Table("Parameter="||param));
Insert Into(dts, dt_subset);
);

Re: データフレームで、列名を含む別の列に基づいて列をフィルターするありがとう、Jarmo。
私はJMPスクリプトを始めたばかりで、画像を保存するために各データテーブルのforループの後に変動チャートが必要です
dts={};
For Each({param}, params,
//cols_to_subset = {"Parameter"};
cols_to_subset = {:Name("PRODUCT"), :Name("WAFER_LOT"), :Name("CHUNK"), :Name("WAFER_ID"),
:Name("CHUNK_ID"),:Name("SLIDER_LOT"),:Name("TST_DATE"),:Name("WAFER_LOT"),:Name("FAIL_MODES"),:Name("DISPOSITION"),:Name("QTY_HGA"),
:Name("min_ET_date"),:Name("wafer_type"),:Name("wd_wafer_mfr_loc"),:Name("cq_or_child"),:Name("radius"),:Name("calc_sh_rd1"),
:Name("calc_sh_rd2"),:Name("CTQ_WRT_WDTH"),:Name("Parameter"),:Name("Product_waferID_Chunk_ID"),:Name("hga_tester_id")};
Insert Into(cols_to_subset, param);
//Insert Into(param,cols_to_subset);
cur_rows = dt_tester << get rows where(:Parameter == param);
dt_subset = dt_tester << Subset(Rows(cur_rows), Selected Rows(0), Columns(cols_to_subset) ,Output Table("Parameter="||param));
//Insert Into(dts, dt_subset);
//);
//this part not working
dt_subset << Variability Chart(
Y(__params__),
X( :WAFER_LOT, :CHUNK, :hga_tester_id ),
Sigma Multiplier( 6 ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Variability Analysis( Std Dev Chart( 0 ) ),
SendToReport(
Dispatch(
{__Variability Chart__},
"Variability Chart",
FrameBox,
{Row Legend(
hga_tester_id,
Color( 1 ),
Color Theme( "JMP Default"(1) ),
Marker( 0 ),
Marker Theme( "" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
)
);Re: データフレームで、列名を含む別の列に基づいて列をフィルターするありがとう、Jarmo。
しかし、グラフを保存するには、forループの一部として変動チャートをプロットする必要があります。
params = Associative Array(Column(dt, "Parameter")) << get keys;
dts = {};
For Each({param}, params,
//cols_to_subset = {"Parameter"};
cols_to_subset = {:Name("PRA"), :Name("WA"), :Name("CH"), :Name("WA_D"),
:Name("CH_D"),:Name("SL_T"),:Name("TST_DATE"),:Name("IL_M"),:Name("QTY"),
:Name("W"),:Name("Parameter"),:Name("h_t_d")};
Insert Into(cols_to_subset, param);
cur_rows = dt << get rows where(:Parameter == param);
dt_subset = dt << Subset(Rows(cur_rows), Selected Rows(0), Columns(cols_to_subset), Output Table("Parameter="||param));
Insert Into(dts, dt_subset);
Variability Chart(
Y(__params__ ),
X( :WA, :CH, :h_t_d ),
Sigma Multiplier( 6 ),
Analysis Type( "Choose best analysis (EMS REML Bayesian)" ),
Variability Analysis(__params__, Std Dev Chart( 0 ) ),
SendToReport(
Dispatch(
{},
"Variability Chart",
FrameBox,
{Row Legend(
h_t_d,
Color( 1 ),
Color Theme( "JMP Default"(1) ),
Marker( 0 ),
Marker Theme( "" ),
Continuous Scale( 0 ),
Reverse Scale( 0 ),
Excluded Rows( 0 )
)}
)
)
)
Pause()
);Re: データフレームで、列名を含む別の列に基づいて列をフィルターする変動性プロットは、あなたが望む最終目標ですか? それとも、他の目的にもサブセットが必要ですか (サブセットを作成せずに、スクリプトを使用して元のテーブルから変動性プロットを作成するだけで済む可能性が高いです)?
変動チャートの Y と X としてどの列を使用する必要がありますか?