2016-07-21 16 views
0

Ich bin eine Variable reinigen - last_name - dass für einige Namen der zweite Name nach einem Komma enthalten ist, während für die meisten Namen der zweite Name in der Variablen middle_name gespeichert ist.So entfernen Sie den Inhalt der Zeichenfolge nach einem Zeichen

Hier sind einige Beispiele:

last_name 
Smith, R 
Anderson, Jay 
Epps,William 
McKinsey,F 

Dies ist mein Code:

split last_name, p(,) 
replace last_name = substr(last_name, 1, length(last_name)-3) if /// 
      length(last_name2)==3 

Ich konnte dies durch eine forvalues ​​Schleife gesetzt und die Länge der Saiten erhöhen ich fallen, aber das fühlt sich an wie eine grobe Methode. Gibt es eine sauberere Möglichkeit, alle Werte nach dem Komma (oder einem anderen Zeichen) zu löschen?

Antwort

2

Suchen Sie die Position des (ersten) Kommas.

subtrahiert 1.

, dass der Teil gehalten werden gibt.

replace last_name = substr(last_name, 1, strpos(last_name, ",") - 1) 

Verallgemeinern für jedes andere Zeichen.

Dies sollte aber nur dann, wenn es ein solches Zeichen geschehen:

replace last_name = substr(last_name, 1, strpos(last_name, ",") - 1) if strpos(last_name, ",") 

jedoch nicht verlieren Informationen, die Sie später möchten. Es ist besser, eine neue Variable zu erstellen:

gen surname = substr(last_name, 1, strpos(last_name, ",") - 1) 
replace surname = last_name if missing(surname) 
Verwandte Themen