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)