在数据框中,根据包含列名的另一列过滤列大家好,
我附加了一个数据集。在数据集中,我有一列名为 Parameter,其中包含数据集中列的名称。我想先过滤与 Parameter 列中存在的每个唯一列名相对应的列,然后将其连接到我创建的子集列并创建一个可变性图表。目前,我在 Parameter 列中有 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"),:名称("QTY"),
:名称(“ W”),:名称(“参数”),:名称(“ h_t_d”)};
长度 (lst)
i参数=1
while(iparam=length(lst)) {
打印(lst[iparam])
dt=dt_1
dt_1 << 选择其中 (:Parameter == lst[iparam]) //有效
dt<
dt<< 子集(所有行,列(子集列))
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);
);

回复:在数据框中根据包含列名的另一列过滤列谢谢 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 )
)}
)
)
)
);回复:在数据框中根据包含列名的另一列过滤列谢谢 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()
);回复:在数据框中根据包含列名的另一列过滤列变异性图是您希望拥有的最终目标吗?或者您是否还需要子集来做其他事情(您很可能只需使用一些脚本从原始表格中创建这些变异性图,而无需创建子集)?
哪些列应该用作变异性图表的 Y 和 X?