【发布时间】:2016-11-11 05:20:47
【问题描述】:
假设我有一个具有以下名称的变量数据集(注意 x 和 hm 的存根):
x9, xdog, x_99, hma8j, hm40, hm0
我想开发一种编程方式来提供变量名称列表(可能包含通配符),然后将每个变量名称循环到 recode 所有小于 0 且缺少值的值 (.)。
实际上,我有很多专栏,只想recode 其中一些。我不想使用列索引或范围,因为我不知道它们,因为我的数据很大。
我的方法包括以下步骤:
-
创建一个名为
myvars的本地宏,其中包含带有通配符的变量名称local myvars x* hm* -
扩展变量列表中的字符串以包含完整的变量名称字符串(这应该产生原始变量名称):
syntax 'myvars' -
循环遍历变量名列表以设置缺失值:
foreach x of local 'myvars' { replace 'x' = . if 'x' < 0 }
但是,我不知道如何在 for 循环中包含通配符。
上面的代码不起作用并产生invalid syntax 错误。
我发现 Statalist 上的以下线程很有用,但它们没有提供解决方案,并且使用存根似乎效率不高:
谁能帮助我?
【问题讨论】:
标签: loops stata stata-macros