Prüfen Sie, ob Wafer aus einem Eingabestring in einer Datentabelle enthalten istIch habe eine Eingabezeichenfolge von unten:
For( i = 1, i <= N Rows( dtWaferIDList ), i++,
tempi = Column( dtWaferIDList, 1 )[i];
InputString = If( i == 1, "'", "" ) || InputString || tempi || If( i < N Rows( dtWaferIDList ), "','", "'" );
);
Und ein table1, das ich aus einer Datenbank ziehe. Ich möchte überprüfen, ob (in der Spalte Wafer von Tabelle 1) alle Wafer aus der Eingabezeichenfolge in dieser Spalte enthalten sind.
- wenn alle Wafer Daten haben: Display-Meldung = "Daten für alle Wafer vorhanden".
- wenn nicht: Displaymeldung = "keine Daten verfügbar".
Vielen Dank!
DatentabelleSkriptingBetreff: Prüfen, ob Wafer aus einem Eingabestring in einer Datentabelle enthalten istFür diesen Vergleich können Sie höchstwahrscheinlich das Assoziative Array verwenden Anwendungen für assoziative Arrays . Schau dir das Teil an Vergleichen Sie Spalten in zwei verschiedenen Datentabellen
Betreff: Prüfen, ob Wafer aus einem Eingabestring in einer Datentabelle enthalten ist@jthi hat Sie in die richtige Richtung gewiesen.Ihr vorgeschlagener Ansatz verwendet eine sehr lange Literalzeichenfolge.Ich schlage vor, dass Sie entweder assoziative Arrays oder eine JMP-Liste verwenden.
Unten ist ein einfaches Skript, das eine Datentabelle öffnet, die Wafer enthält.Es erstellt dann eine Datentabelle, die einen zufälligen Satz von Wafern enthält.Schließlich prüft es, ob der zufällige Satz alle Wafer aus der ersten Datentabelle enthält.
names default to here(1);
// Open Data Table: semiconductor capability.jmp
// → Data Table( "semiconductor capability" )
dt = Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
unique wafers = associative array(dt:Wafer);
// Create a random wafer table and see if it contains all wafers
dtRand = new table("Random",
add rows(60),
new column("Rand Wafer", set each value(random integer(1,24)));
);
random wafers = associative array(dtRand:Rand wafer);
Random wafers << Intersect( unique wafers );
if(n items(Random wafers) == n items( unique wafers),
msg = "data for all wafers available",
msg = "no data available"
);
new window("Message", <<MODAL></MODAL>Betreff: Prüfen, ob Wafer aus einem Eingabestring in einer Datentabelle enthalten istHallo Nelson,
Ich schätze die Hilfe! Ich bin noch ein bisschen neu bei JMP und habe noch keine assoziativen Arrays verwendet. Ich habe mich im Scripting Guide und Index darüber informiert; habe aber immer noch etwas Verwirrung. Hier bin ich in meinem Code: (direkt nach dem Öffnen der Tabelle WaferRgDt aus einer Datenbank)
unique wafers = Associative Array( WaferRgDt:Wafer );
given wafers = Associative Array( dtWaferIDList:WaferList );
intersection = unique wafers; intersection << Intersect( given wafers); //intersection between arrays
//uncommmon2 represents wafers that have no data associated with it.
uncommon2 = given wafers; uncommon2 <<REMOVE></REMOVE>
Wenn ich dies ausführe, erhalte ich eine leere Messagebox mit einem Punkt ... also scheint immer noch etwas falsch zu sein. Ich frage mich, ob es ein Logikproblem oder eine Syntax ist. Ich hatte einige Probleme herauszufinden, wie man Schlüssel in eine Messagebox schreibt, wenn es überhaupt möglich ist. Hoffe das war klar genug. Danke noch einmal!
Betreff: Prüfen, ob Wafer aus einem Eingabestring in einer Datentabelle enthalten istHabe diesen Diskussionsbeitrag auch verwendet, um den obigen Code zu schreiben:
https://community.jmp.com/t5/Discussions/Quick-way-to-compare-two-lists-and-identify-the-uncommon/td-p/5811Betreff: Prüfen, ob Wafer aus einem Eingabestring in einer Datentabelle enthalten istUm eine Liste von Strings in einen String umzuwandeln, können Sie Concat Items() verwenden.
Names Default To Here(1);
aa = Associative Array({"bun",
"shoe",
"tree",
"door"}
);
uniqKeys = aa << get keys;
Show(uniqKeys);
Show(Concat Items(uniqKeys, ", "));