我正在清理变量 - 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循环并增加我掉落的字符串的长度,但这感觉就像一个粗略的方法。是否有更简洁的方法可以删除逗号(或任何其他字符)之后的所有值?
答案 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)