J'ai un tableau de données décrivant l'historique des outils pour une série de lots de semi-conducteurs. Dans certains cas, les lots peuvent être divisés et exécutés sur différents outils pour la même étape de traitement. Dans ce cas, je voudrais créer une colonne avec chaque outil concaténé pour indiquer que > 1 outil a été impliqué. Avec beaucoup d'aide, je suis arrivé au point où je peux identifier les lots, les étapes et les sous-étapes où > 1 outil a été utilisé. Je peux transposer les données pour arriver aux outils nommés dans les colonnes, mais c'est toujours maladroit. Puis-je en quelque sorte concaténer cela pour obtenir la liste des outils uniques. J'ai également regardé Split mais toutes les options ne sont pas reflétées.

Voici une formule qui fonctionnera pour créer votre colonne de résultat souhaité
As Constant( dt = Current Data Table() );
Concat Items( Associative Array( dt[Row(), 0] ) << get keys, "/" );
Txnelson
C'est un grand pas en avant. Existe-t-il un moyen simple d'éviter les 4 premières colonnes de l'équation ? Les colonnes 5 et suivantes contiennent les données pertinentes.
Voici une façon de le faire
As Constant(
dt = Current Data Table();
start = 5;
stop = N Cols( dt );
);
Concat Items( Associative Array( dt[Row(), Index( start, stop )] ) << get keys, "/" );
En guise de suggestion forte, veuillez prendre le temps d'aller sur
Aide=>Aide en ligne JMP
et lisez la section sur le Guide de script pour vous familiariser avec JSL et les scripts
Comme moi, c'est moche mais ça marche. La colonne générée par le script de txnelson peut contenir des instances indésirables de la barre oblique précédant le texte. Je supprime la formule dans la colonne et la remplace par une autre colonne en utilisant regex pour éliminer tout / précédent.
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;Vous allez devoir fournir beaucoup de travail pour obtenir votre résultat. Voici une simple modification de la dernière formule que j'ai créée qui supprime le "/" précédent
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
);
)
);
Voici un exemple complet avec un exemple de tableau de données
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
);
)
);
Je savais que c'était moche ! Bien mieux en effet.
Apprécié comme toujours.