使 foreach 遍历变量的所有值 + return 当前值
Making foreach go through all values of a variable + return the current value
我想使用 Stata FAQ here 构建一个迭代。第二种方法似乎适合我的情况。我构建了以下代码:
levelsof ID, local(levels)
foreach l of local levels {
var var1 var2 if ID == `l', lags(1/4) vsquish
vargranger
}
想法:遍历 ID
中的所有 ID,然后执行 vargranger
。但是,它运行一次,然后输出 no observations
。这不是真的,因为我的搜索变量中有 200 个 ID。
我想添加到我的循环中的第二件事,ID
中使用的当前 ID 的 return / print
函数。
对于 ID
的每个值,输出应该如下所示:
ID = XYZ
Sample: 2001 - 2019 Number of obs = 16
...
vargranger
Granger causality Wald tests
+------------------------------------------------------------------+
| Equation Excluded | chi2 df Prob > chi2 |
|--------------------------------------+---------------------------|
| var1 var2 | 11.617 4 0.020 |
| var1 ALL | 11.617 4 0.020 |
|--------------------------------------+---------------------------|
| var2 var1 | 6.2796 4 0.179 |
| var2 ALL | 6.2796 4 0.179 |
+------------------------------------------------------------------+
当前级别的display
已经很简单了,比如说:
levelsof ID, local(levels)
foreach l of local levels {
di "{title:`l'}" _n
count if !missing(var1, var2) & ID == `l'
var var1 var2 if ID == `l', lags(1/4) vsquish
vargranger
}
“无观察结果”报告可能来自 var
,并不代表您拥有多少标识符。您应该像上面那样添加检查(例如)您必须使用多少观察值。
我想使用 Stata FAQ here 构建一个迭代。第二种方法似乎适合我的情况。我构建了以下代码:
levelsof ID, local(levels)
foreach l of local levels {
var var1 var2 if ID == `l', lags(1/4) vsquish
vargranger
}
想法:遍历 ID
中的所有 ID,然后执行 vargranger
。但是,它运行一次,然后输出 no observations
。这不是真的,因为我的搜索变量中有 200 个 ID。
我想添加到我的循环中的第二件事,ID
中使用的当前 ID 的 return / print
函数。
对于 ID
的每个值,输出应该如下所示:
ID = XYZ
Sample: 2001 - 2019 Number of obs = 16
...
vargranger
Granger causality Wald tests
+------------------------------------------------------------------+
| Equation Excluded | chi2 df Prob > chi2 |
|--------------------------------------+---------------------------|
| var1 var2 | 11.617 4 0.020 |
| var1 ALL | 11.617 4 0.020 |
|--------------------------------------+---------------------------|
| var2 var1 | 6.2796 4 0.179 |
| var2 ALL | 6.2796 4 0.179 |
+------------------------------------------------------------------+
display
已经很简单了,比如说:
levelsof ID, local(levels)
foreach l of local levels {
di "{title:`l'}" _n
count if !missing(var1, var2) & ID == `l'
var var1 var2 if ID == `l', lags(1/4) vsquish
vargranger
}
“无观察结果”报告可能来自 var
,并不代表您拥有多少标识符。您应该像上面那样添加检查(例如)您必须使用多少观察值。