Données du site de décalage 1Salut,
J'ai un script jmp qui compense les résultats du test en fonction des valeurs de la table de données de référence.
Ce sera:
1. Lire le tableau de données et le tableau de données de référence
2. Générez une nouvelle fenêtre pour sélectionner le numéro de site,
3. En fonction de l'entrée de l'utilisateur (numéro de site 1 ou 2), alignez ces données sur les valeurs du tableau de données de référence
Prenez la moyenne par identifiant de plaquette, appliquez le décalage à la table de données principale
Voici le script : il ne produit pas la sortie attendue
Names Default To Here( 1 );
dt1 = Data Table( "Reference data table" );
dt2 = Current Data Table();
For( i = 1, i <= N Rows( dt1 ), i++,
theTest = dt1:Tests[i];
Try( Column( dt2, theTest ) << set property( "TheMean", dt1:mean[i] ) );
);
New window( "", modal,
ct = checkbox({"1","2"}),
Buttonbox ("Ok",
get = ct << Get Selected ();
)
);
sitenum = Transform Each({str}, get, Num(str));
Col_List1 = dt2 << Get Column Names( "String" );
For( c = 1, c <= N Col( dt2 ) - 1, c++,
theMatrix = [];
name = Column( Col_List1[c] ) << Get name;
If( Contains( Col_List1[c], "IL" ),
mean = .;
Try( mean = Column( dt2, col_list1[c] ) << get property( "theMean" ) );
// Don't process if a value for theMean does not exist
If( Is Missing( mean ) == 0,
For Each Row(
If( Contains(sitenum, dt2:SiteNumber), // Something needs to be changed here *****
r = Row();
//mean = dt1:Mean[dt1 << Get Rows Where( :Tests == name )];
//measure = mean - Col Mean( If( dt2:Strips == dt2:Strips[r], Column( dt2, c ), . ) );
measure = mean - Col Mean( As Column( dt2, c ), :Wafer ID );
theMatrix = theMatrix || Column( dt2, c )[r] + measure;
);
);
Column( dt2, c ) << Set Values( theMatrix );
);
);
);ScriptObjet : données du site de décalage 1La façon dont je gérerais cela serait de mettre des instructions show dans le code pour déterminer à quel moment je ne parviens pas à obtenir des résultats corrects.Par exemple, après avoir transformé chacun, mettez show(sitenum).De cette façon, vous pouvez suivre la progression de la logique et voir où elle échoue.Vous pouvez également utiliser l'outil de débogage pour effectuer la même tâche.
Objet : données du site de décalage 1@txnelson apprécier si vous pouvez des conseils
Objet : données du site de compensation 1Names Default To Here( 1 );
dt1 = Data Table( "Reference data table" );
dt2 = Current Data Table();
For( i = 1, i <= N Rows( dt1 ), i++,
theTest = dt1:Tests[i];
Try( Column( dt2, theTest ) << set property( "TheMean", dt1:mean[i] ) );
);
New Window( "",
modal,
ct = Check Box( {"1", "2"} ),
Button Box( "Ok", get = ct << Get Selected() )
);
sitenum = Transform Each( {str}, get, Num( str ) );
Col_List1 = dt2 << Get Column Names( "String" );
For( c = 1, c <= N Col( dt2 ) - 1, c++,
theMatrix = [];
name = Column( Col_List1[c] ) << Get name;
// The following code is never executed since none of the column names
// have the value "IL" in their name
If( Contains( Col_List1[c], "IL" ),
mean = .;
Try( mean = Column( dt2, col_list1[c] ) << get property( "theMean" ) );
// Don't process if a value for theMean does not exist
If( Is Missing( mean ) == 0,
For Each Row(
If( Contains( sitenum, dt2:SiteNumber ), // Something needs to be changed here *****
r = Row();
//mean = dt1:Mean[dt1 << Get Rows Where( :Tests == name )];
//measure = mean - Col Mean( If( dt2:Strips == dt2:Strips[r], Column( dt2, c ), . ) );
measure = mean - Col Mean( As Column( dt2, c ), :Wafer ID );
theMatrix = theMatrix || Column( dt2, c )[r] + measure;
)
);
Column( dt2, c ) << Set Values( theMatrix );
);
);
);Objet : données du site de décalage 1@txnelson Pardon. Il y avait une faute de frappe dans le code.
Voici la bonne déclaration :
// The following code is never executed since none of the column names
// have the value "IL" in their name
If( Contains( Col_List1[c], "Current" ),
Objet : données du site de décalage 1Vous devez parcourir le code à l'aide de la fonction Show() pour voir les valeurs définies, puis déterminer où votre logique ne va pas, ou utiliser le débogueur JMP pour effectuer l'analyse.
C'est la méthode que moi ou n'importe qui d'autre sur le forum devrait faire.Et vous avez l'avantage de comprendre ce que vous attendez du résultat.
Objet : données du site de décalage 1Vous pouvez également utiliser le Débogueur JMP pour examiner ou observer des variables en utilisant des points d'arrêt ou en parcourant le code.
Objet : données du site de compensation 1Vous devriez vraiment apprendre à poser de meilleures questions... et apprendre à déboguer des scripts. Cela dit, voici un script de travail qui fait ce dont vous avez besoin :
Names Default To Here( 1 );
dt1 = Data Table( "Reference data table" );
dt2 = Current Data Table();
For( i = 1, i <= N Rows( dt1 ), i++,
theTest = dt1:Tests[i];
Try( Column( dt2, theTest ) << set property( "TheMean", dt1:mean[i] ) );
);
New Window( "",
modal,
ct = Check Box( {"1", "2"} ),
Button Box( "Ok", get = ct << Get Selected() )
);
sitenum = Transform Each( {str}, get, Num( str ) );
Col_List1 = dt2 << Get Column Names( "String" );
For( c = 1, c <= N Col( dt2 ) - 1, c++,
If( Contains( Col_List1[c], "Current" ),
mean = .;
Try( mean = Column( dt2, col_list1[c] ) << get property( "theMean" ) );
// Don't process if a value for theMean does not exist
If( !Is Missing( mean ),
For(k=1, k<= n items(sitenum), k++,
rows = dt2 << Select Where( :SiteNumber == sitenum[k] ) << Get Selected Rows;
dt2 << Clear Select();
NewValues = Column( dt2, c )[rows]+mean;
For(i=1, i<= n items(NewValues), i++,
Column( dt2, c )[rows[i]] = NewValues[i]
);
);
);
);
);