Schauen Sie sich einfach die Liste der verfügbaren Zeichenfunktionen an JMP Formeleditor.

Nicht, dass irgendjemand zählt, aber das sind 42 Funktionen! Wenn Sie eine Zeichenspalte haben und diese irgendwie ändern möchten, verfügt JMP natürlich über eine Funktion, die dies für Sie erledigt.
Beachten Sie jedoch, dass es bei neun dieser Funktionen ausschließlich – oder größtenteils – um das Extrahieren eines Teils eines Zeichenwerts geht. Zugegebenermaßen ist dies eine der häufigsten Operationen – das Extrahieren eines Teils einer größeren Zeichenfolge. Dies wird als Teilzeichenfolge bezeichnet.
Die offensichtlichste Funktion hierfür ist die Substr() Funktion, aber diese Funktion erfordert, dass Sie genau wissen, wo der Teil, an dem Sie interessiert sind, in der größeren Zeichenfolge liegt. Das bedeutet auch, dass sich der gewünschte Teil in jeder Saite an der gleichen Stelle befinden muss.
Deshalb liebe ich das Wort() Funktion. Es ist erstaunlich flexibel und funktioniert so, wie ich es mir vorstelle.
Der Wort() Die Funktion benötigt zwei erforderliche und ein optionales Argument.
Word(n, „text“, <“delimiters“>)
Der Wort() Funktion teilt die Text in Worte basierend auf dem Trennzeichen Sie angegeben und gibt das n zurück Th Wort. Wenn Sie das nicht angeben Trennzeichen Argument, dann ist das Standardtrennzeichen dasselbe, das wir zum Trennen von Wörtern in Sätzen verwenden: ein Leerzeichen.
Betrachten Sie als Beispiel die folgende Tagesspalte:
| Tag |
|---|
| 6. Dezember |
| 16. Dezember |
| 28. September |
| 19. Mai |
| 29. September |
| 11. September |
| 14. März |
| 13. November |
| 27. Oktober |
| 7. Januar |
Das Trennen des Monats ist mit dem einfach Wort() Funktion. Sie möchten nur das erste Wort jeder Zeichenfolge.
Wort( 1, Tag)
| Monat |
|---|
| Dezember |
| Dezember |
| September |
| Mai |
| September |
| September |
| Marsch |
| November |
| Oktober |
| Januar |
Das funktioniert in vielen Fällen gut, aber die wirkliche Stärke ergibt sich, wenn Sie daran denken, andere Zeichen als Trennzeichen zu verwenden, um eine Zeichenfolge in „Wörter“ zu unterteilen.
Hier ist eine weitere Liste. Das sind Standorte. Diesmal sind der Breiten- und Längengrad in die Zeichenfolge hinter dem Städtenamen eingebettet.
| Standort |
|---|
| 1600 NEW BERN AVE Raleigh, NC [35.779892815000494, -78.61572674699966] |
| 3800 NEW BERN AVE Raleigh, NC [35.79777009600048, -78.57633099599968] |
| 3200 CAPITAL BLVD Raleigh, NC [35.822875239000496, -78.58848179699964] |
| 700 VARDAMAN ST Raleigh, NC [35.77016025800049, -78.61995064499968] |
| 2900 BASSWOOD DR Raleigh, NC [35.74121031600049, -78.60477047599966] |
| 1300 CURFMAN ST Raleigh, NC [35.76619700500049, -78.65143264899967] |
| 8500 SWARTHMORE DR Raleigh, NC [35.89068092800045, -78.60012101699965] |
| 1200 CANYON ROCK CT Raleigh, NC [35.76156160400046, -78.55683519199965] |
| 800 GREENWICH ST Raleigh, NC [35.768321829000456, -78.59393748999963] |
| 300 ROSELLE CT Raleigh, NC [35.788000157000454, -78.58367178499964] |
Es wäre nützlich, Breiten- und Längengrad in einer anderen Spalte zu haben.
Wenn Sie sich die eckigen Klammern als Trennzeichen vorstellen, ist das ziemlich einfach. Sie wollen nur das zweite „Wort“.
Word(2, Ort, „[]“)
Jetzt haben Sie eine Spalte (LatLong) mit Zeichenfolgen, deren Breiten- und Längengrad durch ein Komma und ein Leerzeichen getrennt sind.
| LatLong |
|---|
| 35.779892815000494, -78.61572674699966 |
| 35.79777009600048, -78.57633099599968 |
| 35.822875239000496, -78.58848179699964 |
| 35.77016025800049, -78.61995064499968 |
| 35.74121031600049, -78.60477047599966 |
| 35.76619700500049, -78.65143264899967 |
| 35.89068092800045, -78.60012101699965 |
| 35.76156160400046, -78.55683519199965 |
Der Wort() Funktion kommt wieder zur Rettung. Dieses Mal möchten wir Komma und Leerzeichen als Trennzeichen verwenden. Wenn wir nur ein Komma verwenden, steht am Anfang der Längengradzeichenfolge ein Leerzeichen. Durch die Verwendung beider Trennzeichen erhalten wir Zeichenfolgen ohne Leerzeichen.
Breite
Word(1, LatLong, ",")
Längengrad
Word(2, LatLong, ",")
Diese sollten weiter bereinigt werden, indem sie mit dem in Zahlen umgewandelt werden Num() Funktion, aber das ist eine Übung für einen anderen Beitrag.
Der Schlüssel, um die Vorteile zu nutzen Wort() Die Funktion besteht darin, Ihre Zeichenfolgen als „Sätze“ zu betrachten und abstrakt über die Auswahl von Trennzeichen nachzudenken.
Hier ist ein letztes Beispiel. Angenommen, Sie haben eine Spalte mit Losnummern (LotNo), in deren Mitte ein Name eingebettet ist:
| LotNr |
|---|
| A30941ALTE69073172 |
| A82886ILEAK51521781 |
| A54715XSURVXC88997379 |
| A7860BATTBC97523479 |
| A79004ILEAK52159080 |
| A59508ABAEG58962051 |
| A44172ILEAK28255713 |
| A21319XSURVXC88014800 |
| A58308BATTBC49519851 |
| A19412C83938451 |
Dies ist schwierig, da der Name nicht in jeder Zeile an derselben Position in der Zeichenfolge vorkommt. Wenn Sie beim Lesen an die Zahlen genauso denken wie an Leerzeichen, dann wird der Name zum „zweiten“ Wort.
Word(2, LotNo, „0123456789“)
| NAME |
|---|
| ALTE |
| ILEAK |
| XSURVXC |
| BATTBC |
| ILEAK |
| ABAEG |
| ILEAK |
| XSURVXC |
| BATTBC |
| C |
Wenn Sie Zeit haben, nur eine der 42 Zeichenfunktionen im Formeleditor zu lernen, würde ich mit beginnen Wort() Funktion.
Sehr hilfreich.
Vielen Dank, dass Sie dies vor allen anderen hervorgehoben haben...!
Jeff Perkinson schrieb:
Probieren Sie es aus Artikel() Funktion stattdessen. Es ist genau wie Word(), außer dass mehrere Trennzeichen so behandelt werden, als würden sie jeweils ein neues Element definieren.
Yee-Seng Lee schrieb:
Hallo Jeff,
Wenn ich einen String = „1*2*3**5***8“ hätte, der in 8 separate Spalten statt in 5 aufgeteilt werden soll, bedeutet dies, dass das Double ** als eine Spalte mit leeren Daten betrachtet werden sollte , während Triple *** als zwei Spalten mit leeren Daten betrachtet werden sollte, usw., gibt es eine Problemumgehung mit der Word-Funktion?
Jeff Perkinson schrieb:
Danke, Paul. Ich habe den Beitrag aktualisiert, um diese Tabelle zu korrigieren.
Paul Savarese schrieb:
Jeff: Ihr Beitrag über die WORD-Funktion hat mir gefallen, aber das letzte Beispiel hat mich etwas verwirrt. Es scheint, dass etwas nicht stimmt. Die erste Lot-Nr. ist A30941ALTE69073172 und das eingebettete „Wort“ ist offenbar ALTE, doch das Word(2, LotNo, „0123456789“) wird als Rückgabewert „C“ angezeigt? Außerdem hatten einige der anderen Lot-Nr. Wörter von „XSURVX“ eingebettet, aber keines der Ergebnisse zeigte, dass dies ausgewählt wurde. Außerdem habe ich das Wort „VOLT“ in keiner der Lot-Nr. eingebettet gesehen, aber es erscheint zweimal als Ergebnis der WORD-Funktion?
Danke,
Paul S.