2016-11-12 8 views
0

Ich stelle wahrscheinlich eine triviale Frage, aber ich würde lieber fragen und lernen, als es zu ignorieren. Ich habe einen Vektor mit dem Namen Names, der offensichtlich Namen von Männern und Frauen jeden Alters enthält.String Manipulation

Meine Aufgabe ist es, den vollen Namen jeder Person zu behalten. Das Format des Ausgangsvektors Names wie folgt:

'last name','title'.'first name' 

Beispiele: "Fräulein"

Names <- c("Jackson, Mr. James", "Johnson, Miss. Elizabeth") 

Wie kann ich alles (vollständigen Namen) halte andere als der Titel ("Herren", , etc)?

+0

'gsub' den Trick –

Antwort

2

könnten Sie diese Regex verwenden, um die ganze Sache entsprechen: (see on regex101)

(.*),.*\. (.*) 

Gruppe 1 Spiele Nachname, Gruppe 2 name ersten Spiele.

Sie dann jedes Spiel mit \2 \1 für firstname lastname ersetzen oder mit \1 \2 für lastname firstname

-Code ersetzen

gsub("(.*),.*\. (.*)", "\2 \1", yourArray) 
+0

Es gibt viele, viele andere Titel vielleicht besser tun würde, um alles zwischen ',' und '.' mit Leerzeichen zu ersetzen? – zx8754

+0

brauchst du 'perl = TRUE'? Und nicht sicher über eine Groß-/Kleinschreibung-Flag: in Standard-R wäre es "ignore.case = TRUE" (aber vielleicht gibt es eine Groß-und Kleinschreibung Flag in die Regex wenn "perl = TRUE"? –

+0

Meine Antwort aktualisiert. Ich denke 'perl = TRUE' ist nicht notwendig, dies funktioniert in jeder Regex-Engine Die aktualisierte Antwort benötigt keine Markierung mehr –