非常直截了当的问题。你能在Stata中为字符串使用通配符函数吗?我找不到合适的解决方法。
以下是我尝试使用的代码:
gen newvar= "output" if reg_id == "input*"
我有不同的输入值,即input12
,input18
,input28292
等。通配符选择似乎不起作用。
答案 0 :(得分:0)
一个简单的解决方案:
gen newvar = "output" if strmatch(reg_id, "input*")
请参阅help strmatch
了解使用情况。
另请注意,您可以使用regexm
代替strmatch
。
答案 1 :(得分:0)
这不会按你的意愿工作。就Stata而言,"*"
是一个你正在寻找并且无法找到的字面字符。
这样的通配符语法适用于需要变量列表的情况,即它可以应用于变量名称,但要将其与字符串值一起使用,则需要专用函数。
在您的示例中,所有情况都以字符串input
开头,因此可以使用:
gen newvar = "output" if substr(reg_id, 1, 5) == "input"
Stata还支持模式匹配和正则表达式。
gen newvar = "output" if strmatch(reg_id, "input*")
实际上是获得你要求的最简单方法。
所有记录:
help string functions