En un marco de datos Filtrar columna en función de otra columna que contenga el nombre de la columnaHola amigos,
He adjuntado un conjunto de datos. En el conjunto de datos, tengo una columna llamada Parámetro que contiene el nombre de las columnas que están en el conjunto de datos. Primero quiero filtrar la columna que corresponde a cada nombre de columna único que está presente en la columna Parámetro y luego unirla a la columna de subconjunto que he creado y crear un gráfico de variabilidad. En este momento tengo 2 parámetros únicos en la columna Parámetro y esto puede variar semana a semana, por lo que me gustaría que esté parametrizado. A continuación, tengo parte del código que he realizado. Cualquier ayuda será apreciada.
Gracias
Pío
dt_2 = Tabla de datos( "jmp_question_T_V0" ) << Resumen(
Grupo( :Parámetro ),
Frecuencia("Ninguna"),
Peso("Ninguno")
);
lst = columna(dt_2,1) << GetAsMatrix();
cerrar(dt_2,no guardar);
subconjunto_cols = {:Nombre("PRA"), :Nombre("WA"), :Nombre("CH"), :Nombre("WA_D"),
:Nombre("CH_D"),:Nombre("SL_T"),:Nombre("TST_DATE"),:Nombre("IL_M"),:Nombre("CANTIDAD"),
:Nombre("W"),:Nombre("Parámetro"),:Nombre("h_t_d"};
longitud (lst)
iparam = 1
mientras(iparam=longitud(lst)) {
imprimir(lst[iparam])
dt=dt_1
dt_1 << seleccionar donde (:Parámetro == lst[iparam]) //funciona
es
dt<< subconjunto(todas las filas, columnas(subconjunto_cols))
parámetro_dt<
Automatización y scripting Exploración y visualización de datos
Re: En un marco de datos Filtrar columna en función de otra columna que contiene el nombre de la columnaEl script que ha proporcionado no funciona porque falta y utiliza una sintaxis incorrecta para el bucle while. Si desea obtener valores únicos de una columna de caracteres, puede utilizar la tabla de resumen, la función de resumen o la matriz asociativa. No estoy seguro exactamente de lo que desea hacer, ya que solo proporcionó un archivo .csv.
Names Default To Here(1);
dt = Current Data Table();
params = Associative Array(Column(dt, "Parameter")) << get keys;
Si desea crear subconjuntos separados según la columna Parámetro, puede usarlo simplemente como un subconjunto por columna.

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));
O bucle
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);
);
También puedes seleccionar las filas, pero normalmente no es necesario.
Re: En un marco de datos Filtrar columna en función de otra columna que contiene el nombre de la columnaHola Jthi,
Gracias por tu respuesta, pero lo que quiero es esto. Es decir, si el parámetro tiene S_rd2_iqr, entonces quiero que solo se filtre la columna S_rd2_iqr como se muestra en la captura de pantalla. Si el parámetro tiene S_rd2, entonces quiero que solo se filtre la columna S_rd2 como se muestra en la captura de pantalla. Estos parámetros variarán cada vez, por lo que quiero que estén parametrizados.

Re: En un marco de datos Filtrar columna en función de otra columna que contiene el nombre de la columna¿Algo como esto?
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: En un marco de datos Filtrar columna en función de otra columna que contiene el nombre de la columnaGracias Jarmo.
Estoy empezando a crear scripts de JMP y necesito un gráfico de variabilidad como parte del bucle for para cada tabla de datos para guardar la imagen.
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: En un marco de datos Filtrar columna en función de otra columna que contiene el nombre de la columnaGracias Jarmo.
Pero es necesario trazar un gráfico de variabilidad como parte del bucle for para guardar el gráfico.
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: En un marco de datos Filtrar columna en función de otra columna que contiene el nombre de la columna¿Los gráficos de variabilidad son el objetivo final que desea tener? ¿O también necesita los subconjuntos para algo más (lo más probable es que pueda crear esos gráficos de variabilidad a partir de su tabla original con algunos scripts sin crear los subconjuntos)?
¿Qué columnas se deben utilizar como Y y X para los gráficos de variabilidad?