首页 > 解决方案 > “if”语句中的通配符?

问题描述

我有一个以类似方式结尾的变量列表:

variable_1_2
variable_1_3
variable_1_4
variable_2_2
variable_2_3

等等

我想根据所有这些变量的值定义一个变量。如果其中任何一个为 0,我希望我的新变量也为 0:

gen newVar = .
replace newVar = 0 if variable_* == 0

但是,这会返回“无效名称”。

if 语句中不能使用通配符吗?有没有解决的办法?

标签: stata

解决方案


的结果

generate wanted = .  

foreach v of var variable_* {  
    replace wanted = 0 if `v' == 0 
} 

如果任何参数为 0,则为 0,否则为缺失。

egen anyzero = anymatch(variable_*), values(0) 

如果任何参数为 0,将产生一个指示符,如果没有参数,则为 0。如果需要补码,您始终可以将 0 和 1 作为结果翻转。


推荐阅读