如果要循环一个文件中的所有变量,那么可以用语句:foreach v of varlist _all {
}
但是,如果我只想循环其中一部分变量,应该在哪里做限定呢?是在foreach语句前面先定义“varlist”吗?
或者能不能在foreach语句中间对“v”进行一个判断,假如v不是某几个特定变量(比如id和year),那么就对它执行后面的操作。这个判断语句又应该怎么写呢?主要是我不知道如何判断变量是否同一个变量,好像不可以用`v'!=year这种写法吧。
附上我的整体代码:
program gensdvariable
version 15
sort Stkcd year month
foreach v of varlist _all {
local i=1
destring `v', replace
forvalues i= 1/3 {
by Stkcd: gen `v'_lag`i'=`v'[_n-`i']
local i=`i'+1
}
egen sd_`v'=rowsd(`v' `v'_lag1 `v'_lag2 `v'_lag3)
}
end
代码的目的主要是对文档中的部分变量(现在设置的是所有变量)进行循环,求出每个变量的滞后值,并计算滞后值的标准差。
或者还有一种想法是,能否将foreach语句单独定义成一个程序,设置参数为某个变量,也就是我可以选择只对某一个变量执行foreach语句。
请问如何实现?谢谢!!


雷达卡





京公网安备 11010802022788号







