Bonjour, je m'appelle Jamal. Je viens de Malaisie et je n'ai vraiment aucune connaissance en matière de script JSL. Mon projet est donc le suivant: chaque table que j'ouvre à partir de Data Wafer est livrée avec des lignes et des colonnes indésirables. Mon objectif est donc que les données ne fonctionneront que si le paramètre de ligne de nom et les autres constituent une nouvelle colonne. Je dois également supprimer une ligne spécifique que je n'ai pas utilisée. Donc ma question à quelqu'un d'expert en script. Pouvez-vous écrire, le programme, que si je choisis une table de données, il supprime automatiquement l'autre ligne à l'intérieur du marqueur rouge et crée un paramètre de ligne en tant que nouvelle colonne ?
P/s toutes les tables de données n'ont pas le même paramètre de ligne (44)
D'accord monsieur, un grand merci à vous.
j'essaye ok
)
Changez votre JSL bivarié en
Bivariate( Y( :Y ), X( :X ), Where( :WAFER_ID == ID_Wafer & :SITE_NO == 1 ) );
Bivariate( Y( :Y ), X( :X ), Where( :WAFER_ID == ID_Wafer & :SITE_NO == 2 ) );
Aussi,
Veuillez ne pas simplement couper/coller et utiliser le JSL que j'ai fourni.S'il vous plaît, parcourez-le et apprenez-le.
Oh mon Dieu. Merci beaucoup monsieur.
Puis-je demander un peu d'aide ?
Car le résultat du tableau de données doit être en bivarié et non en mosaïque. Je copie et colle déjà votre codage avant mon action de codage Distribution. Mais cela apparaît dans le résultat Mosaic. Alors pouvez-vous vous référer à mon codage et le corriger ?
Veuillez vous référer à la photo que je viens de télécharger
- Si j'exécute le script, il apparaît que le site n°1 et le site n°2 se séparent. comment combiner le site n°1 & le site n°2 comme dans 1 fenêtre ?
User_Input = New Window( "JMP AUTOMATION", << modal(),
hlistbox(
Text Box( "Enter Wafer ID:" ),
ID_Wafer = Text Edit Box( "", <<SET width=""></SET>
Voici la façon dont j’aborderais le problème.Ouvrez le fichier csv dans JMP, puis exécutez le script ci-dessous.Il chargera les données globales dans des variables de table, modifiera les noms de colonnes, puis convertira les colonnes de test en valeurs numériques, etc.
Names Default To Here( 1 );
dt = Current Data Table();
// Add Global info as table variables
theRow = 1;
While( Column( dt, 1 )[theRow] != "Parameter",
If( Column( dt, 2 )[theRow] != "",
dt << new table variable( Column( dt, 1 )[theRow],
Column( dt, 2 )[theRow]
)
);
theRow++;
);
// Get rid of unwanted rows
dt << select where( As Column( dt, 3 ) == "" & As Column( dt, 4 ) == "" );
dt << delete rows;
// Rename columns
theRow = (dt << get rows where( As Column( dt, 1 ) == "Parameter" ))[1];
For( i = 1, i <= N Cols( dt ), i++,
If( Column( dt, i )[theRow] != "",
Column( dt, i ) << set name( Column( dt, i )[theRow] )
)
);
dt << delete rows(theRow);
// Attempt to set meta data for columns
// List of know columns
metaList = {
"SBIN", "numeric", "ordinal",
"HBIN", "numeric", "ordinal",
"DIE_X", "numeric", "ordinal",
"DIE_Y", "numeric", "ordinal",
"SITE", "numeric", "ordinal",
"TOTAL_TESTS", "numeric", "continuous",
"X", "numeric", "ordinal",
"Y", "numeric", "ordinal",
"SITE_NO", "numeric", "ordinal",
"PassFail", "numeric", "ordinal",
"TimeStamp", "numeric", "timestamp",
"PartSN", "character", "nominal"
};
// Process metaList into separate lists for easier processing
colList = {};
typeList = {};
modelList = {};
For( i = 1, i <= N Items( metaList ), i++,
If(
Mod( i, 3 ) == 1, Insert Into( colList, metaList[i] ),
Mod( i, 3 ) == 2, Insert Into( typeList, metaList[i] ),
Insert Into( modelList, metaList[i] )
)
);
For( i = 1, i <= N Cols( dt ), i++,
foundName = Contains( colList, Column( dt, i ) << get name );
If(
foundName,
If(
Contains( {"ordinal", "nominal", "continuous"}, modelList[foundName] ),
Column( dt, i ) << dataType( typeList[foundName] ) << modelingtype( modelList[foundName] ),
modelList[foundName] == "timestamp",
For( k = 1, k <= N Rows( dt ), k++,
Column( dt, i )[k] = Word( 1, Char( Column( dt, i )[k] ), "_ " ) || "/" || Word( 2, Char( Column( dt, i )[k] ), "_ " ) || "/"
|| Word( 3, Char( Column( dt, i )[k] ), "_ " ) || " " || Word( 2, Char( Column( dt, i )[k] ), " " )
);
Column( dt, i ) << datatype( numeric ) << modelingtype( continuous ) << set informat( "y/m/d h:m:s" ) <<
Format( "y/m/d h:m:s", 18, 0 );,
),
Is Missing( Num( Column( dt, i )[1] ) ) == 0,
Column( dt, i ) << datatype( numeric ) << modelingtype( continuous );
);
);
Cela pourrait faire l'affaire :
Names Default to Here( 1 );
dt = Current Data Table();
loc = Contains( Column( dt, 1 ) << Get Values, "Parameter" );
dt << Select Rows( 1::loc - 1 ) << Delete Rows;
loc = Contains( Column( dt, 1 ) << Get Values, "PID-1" );
dt << Select Rows( 2::loc - 1 ) << Delete Rows;
For( i = 1, i <= N Col( dt ), i++,
Column( dt, i ) << Set Name( Column( dt, i )[1] )
);
dt << Select Rows( [1] ) << Delete Rows
Désolé, j'ai oublié de mettre le tableau de données de Wafer