根据前缀循环变量名称

时间:2012-12-20 02:55:23

标签: loops local-variables stata

我必须进行一些配对t检验,我想知道如何自动化整个程序。 假设我只有以下变量:

int_ma    est_ma    tot_ma    int_pa    est_pa    tot_pa   

我需要的是计算:

ttest int_ma=int_pa
ttest est_ma=est_pa
ttest tot_ma=tot_pa

当然在某种程度上应该可以利用每一对都有唯一前缀和“_pa,_ma”后缀的事实,但不幸的是我找不到一种简单的方法来仅引用每个变量名称的一部分..

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

有几种方法可以做到这一点。我会使用带有常规列表的foreach循环。在这里,我遍历您的三个前缀,Stata将这些前缀作为本地宏传递给循环,并将_ma_pa附加到generatettest变量。

* generate some data
clear
set obs 100 
foreach x in int est tot {
    foreach y in ma pa {
        generate `x'_`y' = runiform()
    }
}

* -ttest- in -foreach- loop
foreach x in int est tot {
    ttest `x'_pa = `x'_ma
}

foreach帮助文件与macro帮助文件一样值得一读。一开始语法有点奇怪(更像是比R或Matlab的bash脚本),但它非常灵活。