Fehlerbehebung Fehler beim Sortieren von Spalten mit dem Befehl „Sort()“ und beim Ausschließen der am wenigsten aktuellen DuplikateHallo!
Ich habe versucht, ein Skript zu erstellen, das einen Parameter mehrerer Stichproben aus mehreren Tabellen grafisch darstellt. Die Proben werden so benannt, dass sie XX-AA sind, wobei XX die ID/der Name der Probe und AA der Zeitstempel der Probe ist (Tag 1,2,3 usw.). Es tut mir leid, wenn ich so viele Fragen stelle, ich bin noch ziemlich neu in der Programmierung in JSL.
Ich habe meine Tabellen zusammengeführt und wollte sie dann nach der Spalte „Datum und Uhrzeit“ sortieren, die im Format am/d/yh:m:s formatiert ist. Das Ziel besteht darin, Duplikate von Proben zu entfernen und nur die aktuellsten Duplikate beizubehalten, während die anderen Duplikate ausgeblendet und ausgeschlossen werden. Nach der Zusammenführung der Tabellen sieht mein Skript wie folgt aus:
dtMerged=dt1<<Concatenate(dt2);
dtmerged<<Sort( By(:Sample ID), Order(Ascending));
dtmerged<<Sort(By(:Date & Time), Order(Ascending));
dtmerged<<Select Where(:Sample ID == :Sample ID[Row()+1]);
dtmerged<<hide and exclude;
Aus irgendeinem Grund scheint die Sortierung nach der Spalte „Datum und Uhrzeit“ nicht erfolgt zu sein, und daher bin ich mir nicht sicher, ob meine Zeilenauswahl tatsächlich ordnungsgemäß funktioniert. Würde diese Auswahlmethode die Duplikate ausblenden und ausschließen, wenn ein Dateneintrag mehr als ein Duplikat enthält? Ich habe das Gefühl, dass die Sortierung nicht funktioniert, weil mein Spaltenname das Symbol „&“ enthält.
Ich schätze Ihre Hilfe sehr!
Betreff: Fehlerbehebung Fehler beim Sortieren von Spalten mit dem Befehl „Sort()“ und Ausschluss des zuletzt verwendeten DuplikatsVielen Dank, Jim! Es war sehr dumm von mir, das Protokoll nicht geöffnet zu haben, um das zu sehen ... Ich komme mir wie ein Idiot vor, weil ich das nicht getan habe.
Da nun tatsächlich alles richtig sortiert ist, kann ich mit dem nächsten Schritt fortfahren, nämlich dem Ausschließen doppelter Daten. Mein Ziel war es, die vorherigen Iterationen der Duplikate zu entfernen und nur den neuesten Eintrag des Beispiels übrig zu lassen. Angenommen, ich habe zwei Proben mit der Bezeichnung AA-02 um 5 Uhr morgens, während die andere um 7 Uhr desselben Tages entnommen wurde (was in der Spalte „Uhrzeit und Datum“ der Tabelle aufgezeichnet ist). Ich möchte, dass die Tabelle den 5-Uhr-Eintrag ausschließt, aber den 7-Uhr-Eintrag behält.
Alternativ könnte das Gleiche auch mit drei Proben passieren, beispielsweise FJ-01 mit drei Iterationen: Eine um 5 Uhr morgens, eine um 7 Uhr morgens und eine um 10 Uhr morgens. Auch hier besteht das Ziel darin, nur den 10-Uhr-Einlass beizubehalten, den 5-Uhr- und 7-Uhr-Einlass jedoch auszuschließen. Ich habe versucht, ein JSL-Skript zu erstellen, indem ich die Tabelle zuerst nach der Proben-ID, dann nach Datum und Uhrzeit sortiert habe und dann den Befehl „Auswählen wo“ verwendet habe, wie unten gezeigt:
MergedTable<MergedTable<MergedTable<MergedTable<<hide and exclude;
Es findet jedoch keine Auswahl statt und das Protokoll scheint leider keine Fehler zu erwähnen. Stimmt etwas mit meinen Auswahlkriterien nicht, was dazu führen würde, dass keine Auswahl erfolgt?
Betreff: Fehlerbehebung Fehler beim Sortieren von Spalten mit dem Befehl „Sort()“ und Ausschluss des zuletzt verwendeten DuplikatsDas JMP-Protokoll zeigt beim Ausführen Ihres Codes den folgenden Fehler an
Name Unresolved: Date in access or evaluation of 'Date' , :Date/*###*/
In the following script, error marked by /*###*/
dtMerged = Current Data Table();
dtmerged << Sort( By( :Sample ID ), Order( Ascending ) );
dtmerged << Sort( By( :Date/*###*/ & Time ), Order( Ascending ) );
Das Problem, auf das es hinweist, besteht darin, dass Ihre Spalte mit dem Namen „Datum und Uhrzeit“ von JMP als zwei Namen (Datum und Uhrzeit) interpretiert wird, die Sie in einem booleschen Vergleich „&“ verwenden möchten.Was Sie tun müssen, ist die Verwendung einer :Name()-Funktion, um die Situation zu klären
dtMerged = dt1 << Concatenate( dt2 );
dtmerged << Sort( By( :Sample ID ), Order( Ascending ) );
dtmerged << Sort( By( :Name( "Date & Time" ) ), Order( Ascending ) );
dtmerged << Select Where( :Sample ID == :Sample ID[Row() + 1] );
dtmerged << hide and exclude;
.