【发布时间】:2015-08-18 21:08:04
【问题描述】:
我有一组变量,我将它们的列表保存在全局宏中,以便我可以在函数中使用它们
global inlist_cond "amz2002ras_clss, amz2003ras_clss, amz2004ras_clss, amz2005ras_clss, amz2006ras_clss, amz2007ras_clss, amz2008ras_clss, amz2009ras_clss, amz2010ras_clss, amz2011ras_clss"
之所以将它们保存在宏中是因为列表将处于循环状态,并且其内容会根据年份而变化。
我需要做的是生成一个虚拟变量,如果宏列表中的任何变量具有 WATER 分类,则 water_dummy == 1。在Stata中,我需要写
gen water_dummy = inlist("WATER", "$inlist_cond")
,理想情况下应该转换为
gen water_dummy = inlist("WATER", amz2002ras_clss, amz2003ras_clss, amz2004ras_clss, amz2005ras_clss, amz2006ras_clss, amz2007ras_clss, amz2008ras_clss, amz2009ras_clss, amz2010ras_clss, amz2011ras_clss)
但这不起作用——执行的代码没有任何错误,但虚拟变量只包含 0。我知道可以在 Stata 中的函数内部调用宏,但是当宏包含完整的条件列表时,我从未尝试过。有什么想法吗?
【问题讨论】:
-
“不适合我”不是一个充分的问题报告。 Stata 抱怨什么,如果它抱怨的话?请注意,字符串的最大参数数量为 10,而且您还有更多。见
help inlist。 -
如果您没有达到
inlist的限制,删除双引号应该可以解决问题。 -
@RobertoFerrer:我很抱歉。我澄清了它是如何不起作用的。我错过了最大限制,谢谢。
-
感谢您的澄清。您可以在下面找到替代方案。
标签: stata