字符串变量的通配符用法

时间:2016-08-24 17:54:49

标签: stata

非常直截了当的问题。你能在Stata中为字符串使用通配符函数吗?我找不到合适的解决方法。

以下是我尝试使用的代码:

gen newvar= "output" if reg_id == "input*"

我有不同的输入值,即input12input18input28292等。通配符选择似乎不起作用。

2 个答案:

答案 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