Spalten mit Zeichenwert am Ende einer Spalte umcodierenHallo,
Ich habe einen Tisch wie
| ICH WÜRDE | Spalte2 |
| ABC001235G | |
| ABC001234 | |
| ABC001235 | |
| ABC001234D | |
| ABC001234F | |
Ich möchte die ID-Spalte so umcodieren, dass alle meine Werte wie 'ABC001234D' und 'ABC001234F' zu 'ABC001234' werden - im Grunde möchte ich diesen letzten Buchstaben in der Anweisung löschen. Ich kann dies jedoch nicht manuell tun. Es gibt zu viele Zeilen zu tun und ich könnte es unmöglich manuell für jede ID schreiben, die im Skript verwendet werden kann. Suchen Sie nach einer Möglichkeit, dies durch Scripting zu tun. Vielen Dank!
AnalytikDatentabelleBetreff: Spalten mit Zeichenwert am Ende einer Spalte umcodierenHallo, 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 durchweg aus 3 Zeichen bestehen, können Sie eine neue Spalte erstellen und diese Formel verwenden:
Substr( :ID, 1, 3 ) || Regex( :ID, "\d+" )
Diese Formel lässt inkonsistente Längen numerischer Werte zu.Es ist auch nicht allzu schwer, die Formel für inkonsistente Zeichenzahlen am Anfang der ID-Werte anzupassen.Aber wenn jemand die ID jemals als 0 (die Zahl) anstelle von O (der Buchstabe) oder einen anderen bestimmten Tippfehler eingibt, können Sie unerwartete Ergebnisse erhalten.
Viel Glück,
Kevin
Betreff: Spalten mit Zeichenwert am Ende einer Spalte umcodierenDies können Sie 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 mit Zeichenwert am Ende einer Spalte umcodierenDafür würde ich mit Regex gehen. Mir hat das an einem Punkt gefallen, um zumindest auf einer gewissen Ebene mit Regex loszulegen: Regexon Schaut auch vorbei JMP-Zeichenfunktionen - Regex und Regex aus dem Skriptindex.
Hier ist ein Beispiel mit zwei Möglichkeiten zum Entfernen von Endzeichen mithilfe von Regex in JMP (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 einen aus (einfach mit dem Beispielcode zu testen, wie sie mit verschiedenen Strings funktionieren):
Der erste entspricht 1 oder mehreren Großbuchstaben vom Anfang der Zeichenfolge gefolgt von einer beliebigen Anzahl von Ziffern (damit wird alles nach den Ziffern ignoriert).
Die zweite entspricht null oder mehr Großbuchstaben vom Ende der Zeichenfolge und ersetzt sie durch eine leere Zeichenfolge.