Stata循环中如何利用局部宏进行数值计算?
Stata循环中计算
i-1的正确方法 你的问题出在局部宏的赋值方式上,直接拼接字符串不会触发数值计算。要在循环内得到i-1的数值结果,需要用Stata的宏数值计算语法,也就是在赋值时用=开头,让Stata执行算术运算:
forvalues i = 2/10{ local j = `i' - 1 // 用=触发数值计算,得到i-1的数值结果 drop if view`j' == 0 // 注意判断相等要用双等号==,单等号是赋值运算符 }
关键说明:
- 当你写
local ji' - 1时,Stata只是把i的当前值(比如2)和字符串"-1"拼接,得到的是2-1`这样的文本,而非计算后的数值1。 - 加上
=后,local j =i' - 1会先计算i减1的结果,再把数值赋值给宏j,此时j`的内容就是1、2...9这样的数值。 drop if语句里必须用**双等号==**做相等判断,单等号=在Stata里是赋值功能,会导致语法错误。
内容的提问来源于stack exchange,提问作者Wendy
相关产品推荐
相关产品推荐

