Ajouter/soustraire des valeurs de deux fichiers jmpSalut,
@txnelson @pmroz
J'ai besoin d'aide pour compenser l'ensemble de données en utilisant la valeur de référence dans JSL
Le premier tableau contient la valeur de référence

Le deuxième tableau contient les mesures testées par bandelettes

Je souhaite soustraire la moyenne de la bande A du tableau de données de référence, puis l'ajouter à l'ensemble de données.
Par exemple :
étape 1. la valeur moyenne des bandes A pour le courant = (10+3)/2 = 6,5. Donc 400 - 6,5 = 393,5 et de même pour les autres bandes
étape 2. Ajoutez 393,5 au 2ème tableau de données de la bande A >> 393,2 + 10 = 403,2 et de même pour les autres bandes
Le tableau final doit avoir les valeurs suivantes :

Reportez-vous au fichier ci-joint pour plus de détails.
Merci pour votre aide!
Voici ce que j'ai essayé :
Names Default To Here( 1 );
dt = Current data table();
dtOffset = Open(Limits);
colList = dt << get column names(string);
For( i = 1, i <= N Items( colList ), i++,
theRow = dtOffset << get rows where( dtOffset:Tests == colList[i] );
show(i,nrows(therow));
If( N Rows( theRow ) == 1,
offset = dtOffset:Offset[theRow[1]];
For( k = 1, k <= N Rows( dt ), k++,
Column( dt, i )[k] = Column( dt, i )[k] + offset
);
);
);
Ingénierie Qualité et ProcédésRe : Ajouter/Soustraire des valeurs de deux fichiers jmp@txnelson
pouvez-vous identifier ce qui ne va pas
Re : Ajouter/Soustraire des valeurs de deux fichiers jmp@txnelson
Vous trouverez ci-dessous l'écran des résultats que j'attends. J'ai joint le tableau des données du résultat final
Voici les étapes :
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 la saisie de l'utilisateur (site numéro 1 ou 2), alignez ces données sur les valeurs du tableau de données de référence.
Prenez la moyenne par ID de plaquette, appliquez le décalage à la table de données principale

Names Default To Here( 1 );
Clear globals();
Clear log();
dt1 = Data table( "Reference data table" );
dt2 = Current data table(); /// Select Data table.jmp
For(i=1,i<=nrows(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" );
//if (!contains(Col_List1, "SiteNumber"),
// dt2 <<NEW column=""></NEW> r = dt2 << get rows where(dt2:sitenumber == sitenum[1]); /// something needs to change here ****&&&**&&&&**&&&
//mean = dt1:Mean[dt1 << Get Rows Where( :Tests == name )];
mean = column(dt2, Col_list1[c]) << get property("theMean");
//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 );
););
Re : Ajouter/Soustraire des valeurs de deux fichiers jmpVotre code me prête à confusion.Lorsque vous avez
Pour chaque ligne
chaque ligne distincte de la table de données est traitée.
Lorsque Get Row Where() est utilisé, il ne transmet les données qu'une seule fois.Pouvez-vous fournir un échantillon des résultats que vous attendez ?
Re : Ajouter/Soustraire des valeurs de deux fichiers jmpun conseil Jim ?
Re : Ajouter/Soustraire des valeurs de deux fichiers jmpMerci, @txnelson
J'ai utilisé la syntaxe For each rows mais la boucle prend 40 minutes. Une autre manière ?
For( c = 1, c <= N Col( dt2 ) -1, c++,
theMatrix = [];
name = Column( Col_List1[c] ) << Get name;
if (Contains( Col_List1[c], "Current"),
//For( r = 1, r <= N Rows( dt2 ), r++,
For Each Row(
<BR /> r = dt2 << get rows where(dt2:sitenumber == sitenum[1]);
//mean = dt1:Mean[dt1 << Get Rows Where( :Tests == name )];
mean = column(dt2, Col_list1[c]) << get property("theMean");
//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 );
););Re : Ajouter/Soustraire des valeurs de deux fichiers jmpLe calcul de la « mesure » ne peut pas être calculé.Vous avez écrit une ligne de JSL qui suppose qu'elle parcourt une table de données, mais aucune boucle ne se produit dans les lignes.
Re : Ajouter/Soustraire des valeurs de deux fichiers jmp@txnelson
S'excuser! J'ai joint de mauvais fichiers. Vous trouverez ci-dessous les tableaux de données mis à jour.
J'ai essayé mais les résultats ne sont pas précis
Names Default To Here( 1 );
Clear globals();
Clear log();
dt1 = Data table( "Reference data table" );
dt2 = Current data table(); /// Select Data table.jmp
For(i=1,i<=nrows(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",
ft = ct << Get Selected Indices();
), ct << set all(1);
);
sitenum = {};
Insert Into (sitenum, ft);
Col_List1 = dt2 << Get Column Names( "String" );
//if (!contains(Col_List1, "SiteNumber"),
// dt2 <<NEW column=""></NEW>
Re : Ajouter/Soustraire des valeurs de deux fichiers jmpEn jetant un coup d'œil rapide au script, quelques éléments apparaissent.
- La table de données de référence ne contient aucun nom de test correspondant aux noms de colonnes de la table de données.
- Le Get Rows Where() ne fonctionnera pas.Essayez-vous de trouver toutes les lignes correspondant au numéro de site ?Si c'est le cas, ça devrait être
r = dt2 << get rows where(dt2:sitenumber == sitenum[1]);
Re : Ajouter/Soustraire des valeurs de deux fichiers jmpSalut Jim @txnelson ,
Question rapide:
J'ai modifié le script jsl et je souhaite filtrer les lignes en fonction de la sélection de la case à cocher.
Le script ci-dessous créera une nouvelle fenêtre et demandera à l'utilisateur de cocher la case correspondant au numéro de site.
Je souhaite uniquement ajouter un décalage moyen à la sélection SiteNumber.
Si SiteNumber 1 est sélectionné, alignez uniquement ces lignes. J'ai joint les deux fichiers
J'ai essayé d'utiliser get rowswhere mais les résultats ne semblent pas précis. Je cherche des suggestions
Names Default To Here( 1 );
Clear globals();
Clear log();
dt1 = Data table( "Reference data table" );
dt2 = Current data table(); /// Select Data table.jmp
For(i=1,i<=nrows(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",
ft = ct << Get Selected Indices();
), ct << set all(1);
);
sitenum = {2};
//Insert Into (sitenum, ft);
Col_List1 = dt2 << Get Column Names( "String" );
//if (!contains(Col_List1, "SiteNumber"),
// dt2 <<NEW column=""></NEW>
Re : Ajouter/Soustraire des valeurs de deux fichiers jmpMerci Jim 
Re : Ajouter/Soustraire des valeurs de deux fichiers jmpJ'apportais des modifications au code de Mark, en fonction de problèmes de syntaxe et non de problèmes de logique.J'ai retravaillé le code et je pense que cela fonctionnera
Names Default To Here( 1 );
dt1 = open( "Reference data.jmp" );
dt2 = open( "Data set.jmp" );
For( c = 1, c <= N Col( dt2 ) -1, c++,
theMatrix = [];
name = Column( dt2, c ) << Get Name;
For( r = 1, r <= N Rows( dt2 ), r++,
mean = dt1:Mean[dt1 << Get Rows Where( :Tests == name )];
measure = mean - Col Mean( If( dt2:Strips == dt2:Strips[r], Column( dt2, c ), . ) );
theMatrix = theMatrix || Column( dt2, c )[r] + measure;
);
Column( dt2, c ) << Set Values( theMatrix );
);
Re : Ajouter/Soustraire des valeurs de deux fichiers jmpSalut Jim,
Merci d'avoir corrigé mais cela ne semble pas fonctionner non plus.

Re : Ajouter/Soustraire des valeurs de deux fichiers jmpTu étais un "(".Voici une version corrigée
Names Default To Here( 1 );
dt1 = Open( "Reference data.jmp" );
dt2 = Open( "Data set.jmp" );
For( c = 1, c <= N Col( dt2 ), c++,
name = Column( dt2, c ) << Get Name;
mean = dt1:Mean[dt1 << Get Rows Where( :Tests == name )];
measure = mean - Column( dt2, c ) << Get As Matrix;
Column( dt2, c ) << Set Values( measure );
);
Re : Ajouter/Soustraire des valeurs de deux fichiers jmpMerci Marc. Le code ne semble pas fonctionner

Re : Ajouter/Soustraire des valeurs de deux fichiers jmpVeuillez essayer cet exemple :
Names Default to Here( 1 );
dt1 = Open( "Reference data.jmp" );
dt2 = Open( "Data set.jmp" );
For( c = 1, c <= N Col( dt2 ), c++,
name = Column( dt2, c ) << Get Name;
mean = dt1:Mean[dt1 << Get Rows Where( :Tests == name )];
measure = mean - (Column dt2, c ) << Get As Matrix);
Column( dt2, c) << Set Values( measure );
);