如何使用条件在SAS中创建变量子集

时间:2016-09-07 19:59:53

标签: sas

我正在尝试从变量列表中自动选择两个自变量(满足某个标准)来运行回归。例如,我的变量列表是:

Var1 Var2 Var3 Var4 Var5

我试图使用模式运行10次回归:

outcomeVar = var1 var2
OutcomeVar = var1 var3
.
.
.
OutcomeVar = var2 var3
.
.
.
OutcomeVar = var4 Var5

我正在尝试生成一个宏,它将包含一个自动构建这些回归的循环。我试图使用%scan函数来生成此循环,但无法为变量选择制定标准。

1 个答案:

答案 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 ;