Tengo una tabla de datos que describe el historial de herramientas para una serie de lotes de semiconductores. En algunos casos, los lotes se pueden dividir y ejecutar en diferentes herramientas para el mismo paso de procesamiento. En tal caso, me gustaría crear una columna con cada herramienta concatenada para indicar que se utilizó más de 1 herramienta. Con mucha ayuda, he llegado al punto en el que puedo identificar los lotes, pasos y subpasos en los que se utilizó más de 1 herramienta. Puedo transponer los datos para llegar a las herramientas que se nominan en columnas, pero sigue siendo complicado. ¿Puedo concatenar eso de alguna manera para obtener las herramientas únicas en la lista? También miré Dividir, pero no se reflejan todas las opciones.

Aquí hay una fórmula que funcionará para crear su columna de Resultado deseado
As Constant( dt = Current Data Table() );
Concat Items( Associative Array( dt[Row(), 0] ) << get keys, "/" );
Txnelson
Este es un gran paso adelante. ¿Existe una manera sencilla de evitar las primeras cuatro columnas de la ecuación? Las columnas 5 en adelante contienen los datos relevantes.
Aquí hay una forma de hacerlo.
As Constant(
dt = Current Data Table();
start = 5;
stop = N Cols( dt );
);
Concat Items( Associative Array( dt[Row(), Index( start, stop )] ) << get keys, "/" );
Como sugerencia enfática, tómese el tiempo para visitar
Ayuda=>Ayuda en línea de JMP
y lea la sección sobre la Guía de scripts para familiarizarse con JSL y los scripts.
Al igual que yo, esto es feo pero funciona. La columna generada por el script de txnelson puede tener instancias no deseadas de la barra diagonal que precede al texto. Elimino la fórmula en la columna y la reemplazo con una columna diferente usando expresiones regulares para eliminar cualquier / precedente.
New Column("Tools2", Character, "Nominal", Formula(As Constant(
dt = Current Data Table();
start = 6;
stop = N Cols( dt );
);
Concat Items( Associative Array( dt[Row(), Index( start, stop )] ) << get keys, "/" );));
Wait(1);
Data Table( "Transpose of Tool_History" ):Tools2 << Delete Formula;
colList = Data Table( "Transpose of Tool_History" ) << Get Column Names( String );
For( i = 1, i <= N Cols( Data Table( "Transpose of Tool_History" ) ), i++,
If( Contains( colList[i], "Row" ), /* select only columns with Row
in the name */
Column( colList[i] ) << Set Selected( 1 );
)
);
Data Table( "Transpose of Tool_History" ) << Delete Columns();
New Column("Tools", Character, "Nominal", Formula(Regex(:Tools2, "\w.*")));
Wait(1);
Data Table( "Transpose of Tool_History" ):Tools << Delete Formula;Tendrás que trabajar mucho para obtener el resultado. Aquí tienes una modificación sencilla de la última fórmula que he creado que elimina el "/" anterior.
New Column( "Result",
Character,
"Nominal",
set each value(
As Constant(
dt = Current Data Table();
start = 5;
stop = N Cols( dt );
);
Substr(
Char( Concat Items( Associative Array( dt[Row(), Index( start, stop )] ) << get keys, "/" ) ),
2
);
)
);
A continuación se muestra un ejemplo completo con una tabla de datos de muestra.
Names Default To Here( 1 );
// Create a sample data table
New Table( "Sample",
Add Rows( 3 ),
Set Header Height( 46 ),
New Column( "lot",
Numeric,
"Continuous",
Format( "Best", 12 ),
Set Values( [1324567, 1324567, 1324567] )
),
New Column( "step", Character, "Nominal", Set Values( {"Material", "Material", "Material"} ) ),
New Column( "substep", Character, "Nominal", Set Values( {"Deposit", "CD Measure", "Measure"} ) ),
New Column( "Label", Character, "Nominal", Set Values( {"machine", "machine", "machine"} ) ),
New Column( "Row 1", Character, "Nominal", Set Values( {"Machine A", "Caliper 1", "Tapemeasure 1"} ) ),
New Column( "Row 2", Character, "Nominal", Set Values( {"", "Caliper 2", ""} ) ),
New Column( "Row 2 2", Character, "Nominal", Set Values( {"Machine A", "", ""} ) ),
New Column( "Row 4", Character, "Nominal", Set Values( {"", "", "Tapemeasure 3"} ) ),
New Column( "Row 5", Character, "Nominal", Set Values( {"Machine B", "", ""} ) ),
New Column( "Row 6", Character, "Nominal", Set Values( {"", "", ""} ) ),
New Column( "Row 7", Character, "Nominal", Set Values( {"", "", ""} ) )
);
// Add the concatenated column, with the "/" removed from begining
New Column( "Result",
Character,
"Nominal",
set each value(
As Constant(
dt = Current Data Table();
start = 5;
stop = N Cols( dt );
);
Substr(
Char( Concat Items( Associative Array( dt[Row(), Index( start, stop )] ) << get keys, "/" ) ),
2
);
)
);
¡Sabía que era feo! Mucho mejor, en realidad.
Apreciado como siempre.