Erhalten Sie eindeutige Spaltenwerte und verwenden Sie sie zum Filtern / Bereinigen in einer anderen TabelleHallo, was wäre der Ansatz, um beispielsweise die Schlüssel in einem Array zum Auswählen oder Filtern von Zeilen mit den gleichen Schlüsseln, aber in einer anderen JMP-Tabelle zu verwenden. Ich habe zwei Tische. Einer von ihnen ordnet Proben-IDs für chemische Tests verschiedenen Faktoreinstellungen zu (Temperatur, Zeit, Studiennummer usw.). Ich erhalte erfolgreich die Beispiel-IDs in einem Array. (Entschuldigung, ich bin ein absoluter Neuling in diesem Bereich.)
smplID = Associative array(:sampleid) << Get Keys;
Jetzt möchte ich diese Tasten verwenden, um Zeilen in der zweiten Tabelle (in der meine Antworten sind) auszuwählen, die Zeilenauswahl umzukehren und die Zeilen zu löschen.Diese Referenz brachte mich bisher nirgendwo hin. Vielleicht die Lösung unten, wie hier beschrieben, ist für den Anfang besser geeignet ?
Summarize(dt, smpleID = by(:sampleid));
Oder vielleicht dieser Ansatz istvorzuziehen?
dt << Summary (Group ( :sampleid ), Frequ( "None" ), Weight( "None" );
Wie auch immer, was ich wirklich wissen möchte, ist, wie ich einen dieser Ansätze verwenden kann, um eine Datentabelle effektiv für Zeilen zu bereinigen, die ich nicht benötige, bevor ich mit der Datenanalyse fortfahre. Ich glaube, ich muss lernen, wie man loopt.
Ja, ich versuche, das Scripting Guide wann immer möglich durchzulesen. Ich kann es einfach nicht priorisieren.
SkriptingBetreff: Holen Sie sich eindeutige Spaltenwerte und verwenden Sie sie zum Filtern / Bereinigen in einer anderen TabelleUm eindeutige Werte zu erhalten, sind all dies gültige Methoden und ihre Geschwindigkeit hängt von der Datenmenge ab, die Sie haben. Zu beachten ist, dass Sie, wenn Sie eindeutige numerische Werte verwenden und Summarize verwenden möchten, diese wieder in numerische Werte konvertieren müssen (Zusammenfassen gibt sie als Strings zurück).
Einige verschiedene Möglichkeiten, um eindeutige Werte zu erhalten:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
aa_uniq = Associative Array(dt:age) << get keys;
Summarize(dt, summarize_uniq = by(:age));
dt_summary = dt << Summary(Group(:age), Freq("None"), Weight("None"), private);
summary_uniq = Column(dt_summary, 1) << get as matrix;
Close(dt_summary, no save);
Show(aa_uniq, summarize_uniq, summary_uniq);Um Werte aus der Datentabelle auszuwählen, können Sie Enthält mit auswählen wo verwenden. Möglicherweise müssen Sie die Zeilenauswahl nicht umkehren, da Sie verwenden können! (oder Not()), um das Ergebnis zu negieren, das Sie von Funktionen erhalten. Wartezeiten sind hier nur für Demonstrationen:
Names Default To Here(1);
dt = Open("$SAMPLE_DATA/Big Class.jmp");
names_of_interest = {"KATIE", "LILLIE", "JOHN"};
wait(2);
dt << Select Where(Contains(names_of_interest, :name)) << Invert Row Selection << Hide and Exclude(1);// << clear select;
//Remove selections
wait(2);
dt << Clear Row States;
wait(2);
dt << Select Where(!Contains(names_of_interest, :name)) << Hide and Exclude(1);// << clear select;Auch wenn Sie viele Daten haben, ist dies möglicherweise nicht der effizienteste Weg, aber wahrscheinlich der einfachste, und ich würde damit beginnen.
Betreff: Holen Sie sich eindeutige Spaltenwerte und verwenden Sie sie zum Filtern / Bereinigen in einer anderen TabelleDanke, das hat mir VIEL geholfen! Ich bin mir nicht sicher, was "viele Daten" wirklich bedeutet. Die erste Tabelle, die ich öffne, enthält heute etwa 400 Zeilen, aber diese Zahl wird mit der laufenden Implementierung eines Laborinformationsmanagementsystems (LIMS) in unserer Organisation zwangsläufig wachsen. Ich vermute, dass es im Laufe der Zeit Tausende, vielleicht sogar Zehntausende von Zeilen geben wird. Die zweite Tabelle, in der ich alle für mich irrelevanten Proben-IDs "aufräume", hat bereits etwa 50 000 Zeilen.
Nachdem ich Ihre Lösung implementiert habe, arbeite ich derzeit mit einer Reihe von Beispiel-IDs. (Obwohl ich das Gefühl habe, dass meine Fähigkeiten extrem begrenzt sind, fühlt sich das Skripting immer noch äußerst wertvoll und befriedigend an, wenn es darum geht, eine Lösung zu finden, selbst wenn es aus der Community "gerissen" wird. Also nochmals vielen Dank.)
Betreff: Holen Sie sich eindeutige Spaltenwerte und verwenden Sie sie zum Filtern / Bereinigen in einer anderen TabelleDiese Methoden sind für diese Anzahl von Zeilen schnell!
Es gibt noch eine weitere Lösung, die mir in den Sinn gekommen ist. Sie können zuerst eine Zusammenfassungstabelle erstellen und diese dann mit der Tabelle verknüpfen, aus der Sie gefundene Werte entfernen möchten.
Beispieldaten von JMPs Cars.jmp und Cars 1993.jmp. Autos 1993 wird eine der Daten sein, mit denen wir Autos filtern, indem wir die Modellspalte verwenden.
1. Erstellen Sie eine Zusammenfassungstabelle von Cars 1993 mit Model als Group
2. Verbinden Sie diese neue Übersichtstabelle mit der Cars-Tabelle mit den folgenden Einstellungen:

3. In der neuen Match-Flag-Spalte können Sie zwei Werte sehen: Both und Main. Both bedeutet, dass das Modell in beiden Datensätzen gefunden werden kann
Ich denke, Sie können dies direkt mit Cars 1993 tun, aber Sie müssen mit Duplikaten vorsichtig sein (Drop multiples With Table könnte das lösen, nicht sicher). Auch in diesem Fall möchten Sie Spalten auswählen, die Sie behalten möchten, da es Duplikate geben wird (zumindest bei diesem Beispiel).

Diese beiden können auch relativ einfach per Skript erstellt werden, da JMP den größten Teil der Skripterstellung übernehmen kann.