2016-07-21 12 views
0

私は変数をクリーニングしています - last_name - 一部の名前ではミドルネームがカンマの後に含まれていますが、ほとんどの名前では中間名は変数middle_nameに格納されています。ここで文字の後の文字列の内容を削除する方法

は、いくつかの例があります:私はforvaluesループを介してこれを入れて、私は落ちていた文字列の長さを増やすことができ

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

が、これは感じている:

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

は、これは私のコードです粗い方法のように。コンマ(または他の文字)の後ろにあるすべての値を削除するよりクリーンな方法がありますか?

答えて

2

(最初の)カンマの位置を検索します。

減算1

これにより、部分文字列が保持されます。

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

他の文字はGeneralizeです。

しかし、このような文字がある場合にのみ行われるべきである:

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

ただし、後であなたが望む可能性のある情報を失うことはありません。新しい変数を作成する方が良い:

gen surname = substr(last_name, 1, strpos(last_name, ",") - 1) 
replace surname = last_name if missing(surname) 
関連する問題