Хитрость заключается в том, чтобы использовать ds
или unab
для создания расширения varlist, прежде чем просить Stata зацикливать значения в цикле foreach
.
Вот пример каждого из них:
******************! BEGIN EXAMPLE
** THIS FIRST SECTION SIMPLY CREATES SOME FAKE DATA & INDOOR VARS **
clear
set obs 10000
local suffix `c(ALPHA)'
token `"`suffix'"'
while "`1'" != "" {
g indoor`1'`2'`3' = 1+int((5-1+1)*runiform())
lab var indoor`1'`2'`3' "Indoor Values for `1'`2'`3'"
mac shift 1
}
g group = rbinomial(1,.5)
lab var group "GROUP TYPE"
** NOW, YOU SHOULD HAVE A BUNCH OF FAKE INDOOR
**VARS WITH ALPHA, NOT NUMERIC SUFFIXES
desc indoor*
** ИСПОЛЬЗОВАНИЕ ds
, ЧТОБЫ СОЗДАТЬ ВАШ ВАРЛИСТ ДЛЯ foreach
ПЕТЛИ:
ds indoor*
di "`r(varlist)'"
local indoorvars `r(varlist)'
local n 0
foreach i of local indoorvars {
** ДАВАЙТЕ ОЧИЩАТЬ ВАШИ СТОЛЫ С ЧАСТЬЮ С НЕКОТОРЫМИ ЗАГОЛОВКАМИ display
local ++n
di in red "--------------------------------------------"
di in red "Table `n': `:var l `i'' by `:var l group'"
di in red "--------------------------------------------"
** ВАШИ tab
СТОЛЫ
tab `i' group, col freq chi2 exact nolog nokey
}
******************! END EXAMPLE
ИЛИ используя unab
вместо:
******************! BEGIN EXAMPLE
unab indoorvars: indoor*
di "`indoorvars'"
local n 0
foreach i of local indoorvars {
local ++n
di in red "--------------------------------------------"
di in red "Table `n': `:var l `i'' by `:var l group'"
di in red "--------------------------------------------"
tab `i' group, col freq chi2 nokey //I turned off exact to speed things up
}
******************! END EXAMPLE
Преимущества ds
вступают в игру, если вы хотите выбрать свои внутренние переменные, используя хитрое правило выбора, например, выбирая внутренние переменные, основываясь на информации в переменной переменной или какой-либо другой характеристике.