Stata:使用foreach生成变量

Stata: Generate Variable with foreach

我想通过创建一个等于 A1,..,A5 的新变量 A 来聚合我的变量 A1,..,A5,每当相应的 r`k' 等于 1 时。我有太多变量我想像这样聚合,我想知道是否有一种方法可以比我下面的代码更紧凑地编写它。 (我猜 foreach 可以在这里使用,但我不确定如何使用)

gen A=.
gen B=.
forvalues k=1/5 {
replace A=A`k' if r`k'==1
replace B=B`k' if r`k'==1
}

这将一个循环映射为两个:

foreach v in A B 
    gen `v' = . 
    forvalues k=1/5 {
        replace `v' = `v'`k' if r`k'==1
    }
} 

但也许您的数据结构需要重新访问,这样您就可以更简单地获得其他内容,而不是循环两次。因此,如果有意义的话,将 A B 任何东西堆叠到一个变量中将消除一个循环。