Spalten neu kodieren, die einen Zeichenwert am Ende einer Spalte enthaltenHallo,
Ich habe einen Tisch wie
| AUSWEIS | Spalte2 |
| ABC001235G | |
| ABC001234 | |
| ABC001235 | |
| ABC001234D | |
| ABC001234F | |
Ich möchte die ID-Spalte so umkodieren, dass alle meine Werte wie „ABC001234D“ und „ABC001234F“ zu „ABC001234“ werden – im Grunde möchte ich den letzten Buchstaben in der Anweisung streichen. Allerdings kann ich dies nicht durch einen manuellen Prozess tun. Es sind zu viele Zeilen erforderlich, und ich könnte es unmöglich manuell für jede ID schreiben, die im Skript verwendet werden kann. Ich suche nach einer Möglichkeit, dies durch Skripterstellung zu erreichen. Danke!
Erweiterte statistische ModellierungAutomatisierung und SkripterstellungDatenmischung und -bereinigungMassenanpassungBetreff: Spalten neu kodieren, die einen Zeichenwert am Ende einer Spalte enthaltenDafür würde ich Regex verwenden. Das hat mir einmal gefallen, um zumindest auf einer gewissen Ebene mit Regex loszulegen: Regexon Schauen Sie auch vorbei JMP-Zeichenfunktionen – Regex und Regex aus dem Skriptindex.
Hier ist ein Beispiel mit zwei möglichen Möglichkeiten, Endzeichen mithilfe von Regex in JMP zu entfernen (sie können leicht geändert werden, um auch Nicht-Großbuchstaben zu unterstützen):
Names Default To Here(1);
dt = New Table("Untitled 3",
Add Rows(5),
Compress File When Saved(1),
New Column("ID",
Character,
"Nominal",
Set Values(
{"ABC001235G", "ABC001234", "ABC001235", "ABC001234D", "ABC001234F"}
)
)
);
dt << New Column("Regex1", Character, Nominal, Formula(Regex(:ID, "^[A-Z]+(\d+)")));
dt << New Column("Regex2", Character, Nominal, Formula(Regex(:ID, "[A-Z]*$", "", GLOBALREPLACE);));
Wählen Sie je nach Anwendungsfall eine aus (mit dem Beispielcode lässt sich leicht testen, wie sie mit verschiedenen Zeichenfolgen funktionieren):
Zuerst wird ein oder mehrere Großbuchstaben vom Anfang der Zeichenfolge abgeglichen, gefolgt von einer beliebigen Anzahl von Ziffern (also wird alles nach den Ziffern ignoriert).
Bei der zweiten Methode werden null oder mehr Großbuchstaben vom Ende der Zeichenfolge abgeglichen und durch eine leere Zeichenfolge ersetzt.
Betreff: Spalten neu kodieren, die einen Zeichenwert am Ende einer Spalte enthaltenSie können dies mit der folgenden Formel tun:
val = Reverse( :ID );
While( Is Missing( Num( Substr( val, 1, 1 ) ) ),
val = Substr( val, 2 )
);
Reverse( val );
Dadurch werden alle nachfolgenden nicht numerischen Werte entfernt
Betreff: Spalten neu kodieren, die einen Zeichenwert am Ende einer Spalte enthaltenHallo, Saneal!
Hier ist eine Formel, die Ihnen helfen könnte, aber Sie müssen einige Annahmen über die Namenskonventionen und die Genauigkeit der ID-Variablen treffen.
Wenn Ihre ID-Werte am Anfang durchgehend drei Zeichen haben, können Sie eine neue Spalte erstellen und diese Formel verwenden:
Substr( :ID, 1, 3 ) || Regex( :ID, "\d+" )
Diese Formel ermöglicht eine inkonsistente Länge numerischer Werte.Es ist auch nicht allzu schwierig, die Formel anzupassen, wenn die Anzahl der Zeichen am Anfang der ID-Werte inkonsistent ist.Aber wenn jemand die ID jemals falsch als 0 (die Zahl) statt als O (der Buchstabe) eingibt oder einen anderen bestimmten Tippfehler hat, kann es zu unerwarteten Ergebnissen kommen.
Viel Glück,
Kevin