在資料框中根據包含列名稱的另一列篩選列大家好,
我附上了一個資料集。在資料集中,我有一個名為「參數」的列,其中包含資料集中的列的名稱。我想先過濾與參數列中存在的每個唯一列名稱相對應的列,然後將其連接到我建立的子集列並建立變異性圖表。目前,我的「參數」列中有 2 個唯一參數,並且該參數可能每週都在變化,因此我希望對其進行參數化。以下是我已經完成的一些程式碼。任何幫助將不勝感激
謝謝
皮奧
dt_2 = 資料表( "jmp_question_T_V0" ) << 摘要(
組(:參數),
頻率(“無”),
重量(“無”)
);
lst = 列(dt_2,1) << GetAsMatrix();
關閉(dt_2,不儲存);
subset_cols = {:名稱("PRA"), :名稱("WA"), :名稱("CH"), :名稱("WA_D"),
:名稱("CH_D"),:名稱("SL_T"),:名稱("TST_DATE"),:名稱("IL_M"),:名稱("數量"),
:名稱("W"),:名稱("參數"),:名稱("h_t_d")};
長度(第一)
i參數=1
while(iparam=長度(lst)) {
列印(lst[iparam])
dt=dt_1
dt_1 << select where (:Parameter == lst[iparam]) //有效
dt<
dt<< 子集(所有行、列(subset_cols))
dt_param<
自動化和腳本編寫數據探索和視覺化
回覆:在資料框中根據包含列名稱的另一列過濾列您提供的腳本無法運行,因為它丟失了;並對 while 迴圈使用不正確的語法。如果要從字元列中取得唯一值,可以使用總計表、總計函數或關聯數組。我不太確定您想要做什麼,因為您只提供了單一 .csv 檔案。
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);
);
您也可以選擇行,但通常沒有必要
回覆:在資料框中根據包含列名稱的另一列過濾列嗨,Jthi,
感謝您的回复,但我想要的是這個。我的意思是,如果參數有 S_rd2_iqr,那麼我只想過濾 S_rd2_iqr 列,如螢幕截圖所示。如果參數有 S_rd2,那麼我只想過濾 S_rd2 列,如螢幕截圖所示。這些參數每次都會有所不同,因此我希望將它們參數化

回覆:在資料框中根據包含列名稱的另一列過濾列像這樣的東西嗎?
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);
);

回覆:在資料框中根據包含列名稱的另一列過濾列謝謝賈莫。
我剛開始 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 )
)}
)
)
)
);回覆:在資料框中根據包含列名稱的另一列過濾列謝謝賈莫。
但需要繪製變異性圖表作為 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()
);回覆:在資料框中根據包含列名稱的另一列過濾列變異性圖是您想要的最終目標嗎?或者您還需要這些子集(您很可能只需使用一些腳本從原始表建立這些變異圖,而不建立子集)?
哪些欄位應用作變異性圖表的 Y 和 X?