Stata 如何删除字符后的字符串内容

Stata 如何删除字符后的字符串内容,stata,Stata,我正在清理一个变量-last\u name——对于某些名称,中间名包含在逗号之后,而对于大多数名称,中间名存储在变量middle\u name中 以下是一些例子: last_name Smith, R Anderson, Jay Epps,William McKinsey,F 这是我的代码: split last_name, p(,) replace last_name = substr(last_name, 1, length(last_name)-3) if ///

我正在清理一个变量-
last\u name
——对于某些名称,中间名包含在逗号之后,而对于大多数名称,中间名存储在变量
middle\u name

以下是一些例子:

last_name
Smith, R
Anderson, Jay
Epps,William
McKinsey,F
这是我的代码:

split last_name, p(,)
replace last_name = substr(last_name, 1, length(last_name)-3) if ///
            length(last_name2)==3 
我可以通过forvalues循环来增加我正在删除的字符串的长度,但这感觉像是一个粗糙的方法。是否有更干净的方法删除逗号(或任何其他字符)后的所有值?

查找(第一个)逗号的位置

减去1

这样就可以保留子字符串

replace last_name = substr(last_name, 1, strpos(last_name, ",") - 1)  
概括任何其他字符

但只有当存在这样一个特征时,才应这样做:

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)