我正在尝试从变量列表中自动选择两个自变量(满足某个标准)来运行回归。例如,我的变量列表是:
Var1 Var2 Var3 Var4 Var5
我试图使用模式运行10次回归:
outcomeVar = var1 var2
OutcomeVar = var1 var3
.
.
.
OutcomeVar = var2 var3
.
.
.
OutcomeVar = var4 Var5
我正在尝试生成一个宏,它将包含一个自动构建这些回归的循环。我试图使用%scan
函数来生成此循环,但无法为变量选择制定标准。
答案 0 :(得分:1)
嵌套循环是一个选项:
%MACRO COMBI ; %LET NVAR = 5 ; %DO X = 1 %TO %EVAL(&NVAR - 1) ; %DO Y = %EVAL(&X + 1) %TO &NVAR ; %LET OUTCOMEVAR = VAR&X VAR&Y ; %PUT &OUTCOMEVAR ; /* do something else with outcomevar */ %END ; %END ; %MEND ; %COMBI ;
如果您的变量实际上没有编号和顺序,则需要采用稍微不同的方法:
%MACRO COMBI ; %LET VARLIST = somevar thisvar thatvar varx vary ; %LET NVAR = %SYSFUNC(countw(&VARLIST)) ; %DO X = 1 %TO %EVAL(&NVAR - 1) ; %DO Y = %EVAL(&X + 1) %TO &NVAR ; %LET OUTCOMEVAR = %SYSFUNC(scan(&VARLIST,&X)) %SYSFUNC(scan(&VARLIST,&Y)) ; %PUT &OUTCOMEVAR ; /* do something else with outcomevar */ %END ; %END ; %MEND ; %COMBI ;