2016-09-07 101 views
0

我想從變量列表中自動選擇(滿足特定標準)的兩個獨立變量來運行迴歸。例如,我的變量列表是:如何使用條件在SAS中創建變量的子集

Var1 Var2 Var3 Var4 Var5 

我試圖使用模式運行10個迴歸:

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

我試圖產生將包含一個循環,會自動建立這些宏迴歸。我正在嘗試使用%scan函數來生成此循環,但無法爲變量選擇制定一個準則。

回答

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 ; 
+0

非常感謝回答我的問題。讓我試試這個。 – sbhat

+0

我修改了* /用outcomevar */section做了別的事情,並生成了下面的代碼。我是本網站的新用戶,因此無法以正確的方式格式化下面的評論。但是,如果您將其複製並粘貼到SAS中,我相信它會以一種整潔的方式顯示出來。 – sbhat

+0

%MACRO Reg; %LET VARLIST = AgeAtStart身高體重舒張壓收縮壓; %LET NVAR =%SYSFUNC(countw(&VARLIST)); %DO X = 1%TO%EVAL(&NVAR - 1); %DO Y =%EVAL(X + 1)%至&NVAR ; %LET STATUS_C =%SYSFUNC(掃描(&varlist中,&X))%SYSFUNC(掃描(&varlist中,&Y)) ; %PUT&STATUS_C; PROC後勤數據=心臟降序; 模型&STATUS_C \t \t ODS輸出ParameterEstimates = EST &X&Y; \t \t ODS輸出FitStatistics =適合&X&Y; 運行; %END; %END; %MEND; %寄存器; – sbhat

相關問題