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

时间:2016-07-21 16:02:54

标签: stata

我正在清理变量 - last_name - 对于某些名称,中间名称包含在逗号之后,而对于大多数名称,中间名称存储在变量middle_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 个答案:

答案 0 :(得分:2)

找到(第一个)逗号的位置。

减去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)