Werte aus zwei JMP-Dateien addieren/subtrahierenHallo,
@txnelson @pmroz
Ich benötige Hilfe beim Versetzen des Datensatzes mithilfe des Referenzwerts in JSL
Die erste Tabelle enthält Referenzwerte

Die zweite Tabelle enthält die mit Streifen getesteten Messungen

Ich möchte den Mittelwert von Streifen A von der Referenzdatentabelle subtrahieren und ihn dann zum Datensatz hinzufügen
Zum Beispiel :
Schritt 1. der Mittelwert für Streifen A für Strom = (10+3)/2 = 6,5. Also 400 - 6,5 = 393,5 und das Gleiche gilt für andere Streifen
Schritt 2. Addieren Sie 393,5 zur 2. Datentabelle von Streifen A >> 393,2 + 10 = 403,2 und ebenso für andere Streifen
Die Abschlusstabelle sollte folgende Werte haben:

Einzelheiten finden Sie in der beigefügten Datei.
Ich danke Ihnen für Ihre Hilfe!
Folgendes habe ich versucht:
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
);
);
);
Qualitäts- und VerfahrenstechnikBetreff: Werte aus zwei JMP-Dateien addieren/subtrahieren@txnelson
Können Sie erkennen, was falsch läuft?
Betreff: Werte aus zwei JMP-Dateien addieren/subtrahieren@txnelson
Unten ist der Bildschirm kurz vor den Ergebnissen, die ich erwarte. Ich habe die Endergebnisdatentabelle beigefügt
Hier sind die Schritte:
1. Datentabelle lesen und Datentabelle referenzieren
2. Erzeugen Sie ein neues Fenster, um die Standortnummer auszuwählen.
3. Richten Sie diese Daten basierend auf der Benutzereingabe (Standortnummer 1 oder 2) an den Werten der Referenzdatentabelle aus
Nehmen Sie den Mittelwert anhand der Wafer-ID und wenden Sie den Offset auf die Hauptdatentabelle an

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 );
););
Betreff: Werte aus zwei JMP-Dateien addieren/subtrahierenDein Code ist für mich verwirrend.Wenn du. .. hast
Für jede Reihe
Jede einzelne Zeile innerhalb der Datentabelle wird verarbeitet.
Wenn Get Row Where() verwendet wird, werden die Daten nur einmal durchlaufen.Können Sie ein Beispiel für die erwarteten Ergebnisse geben?
Betreff: Werte aus zwei JMP-Dateien addieren/subtrahierenIrgendein Rat, Jim?
Betreff: Werte aus zwei JMP-Dateien addieren/subtrahierenDanke, @txnelson
Ich habe die Syntax „Für jede Zeile“ verwendet, aber die Schleife dauert 40 Minuten. Gibt es einen alternativen Weg?
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 );
););Betreff: Werte aus zwei JMP-Dateien addieren/subtrahierenDie Berechnung von „Maß“ kann nicht berechnet werden.Sie haben eine JSL-Zeile geschrieben, die davon ausgeht, dass eine Schleife durch eine Datentabelle ausgeführt wird, es findet jedoch keine Schleife durch die Zeilen statt.
Betreff: Werte aus zwei JMP-Dateien addieren/subtrahieren@txnelson
Sich entschuldigen! Ich habe falsche Dateien angehängt. Nachfolgend finden Sie die aktualisierten Datentabellen.
Ich habe es versucht, aber die Ergebnisse sind nicht korrekt
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>
Betreff: Werte aus zwei JMP-Dateien addieren/subtrahierenBei einem kurzen Blick auf das Skript fallen ein paar Elemente auf.
- Die Referenzdatentabelle enthält keine Testnamen, die mit den Spaltennamen in der Datentabelle übereinstimmen
- Die Methode „Get Rows Where()“ funktioniert nicht.Versuchen Sie, alle Zeilen zu finden, die mit der Sitenum übereinstimmen?Wenn ja, sollte es so sein
r = dt2 << get rows where(dt2:sitenumber == sitenum[1]);
Betreff: Werte aus zwei JMP-Dateien addieren/subtrahierenHallo Jim @txnelson ,
Schnelle Frage:
Ich habe das JSL-Skript geändert und möchte Zeilen basierend auf der Auswahl des Kontrollkästchens filtern.
Das folgende Skript erstellt ein neues Fenster und fordert den Benutzer auf, das Kontrollkästchen für die Standortnummer zu aktivieren.
Ich möchte nur den mittleren Offset zur SiteNumber-Auswahl hinzufügen.
Wenn SiteNumber 1 ausgewählt ist, richten Sie nur diese Zeilen aus. Ich habe beide Dateien angehängt
Ich habe versucht, get rows where zu verwenden, aber die Ergebnisse scheinen nicht korrekt zu sein. Ich suche nach Vorschlägen
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>
Betreff: Werte aus zwei JMP-Dateien addieren/subtrahierenDanke Jim 
Betreff: Werte aus zwei JMP-Dateien addieren/subtrahierenIch habe Änderungen an Marks Code vorgenommen, basierend auf Syntaxproblemen, nicht auf Logikproblemen.Ich habe den Code überarbeitet und glaube, dass das funktionieren wird
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 );
);
Betreff: Werte aus zwei JMP-Dateien addieren/subtrahierenHallo Jim,
Danke für die Korrektur, aber es schien auch nicht zu funktionieren.

Betreff: Werte aus zwei JMP-Dateien addieren/subtrahierenDu warst ein falsch platziertes „(“.Hier ist eine korrigierte Version
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 );
);
Betreff: Werte aus zwei JMP-Dateien addieren/subtrahierenDanke Mark. Der Code scheint nicht zu funktionieren

Betreff: Werte aus zwei JMP-Dateien addieren/subtrahierenBitte versuchen Sie dieses Beispiel:
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 );
);