2016-02-26 52 views
0

我似乎無法找到這個網上資料...SAS執行循環的一個Proc步驟

我的變量我想要做一個總結PROC名單。由於這些proc摘要是針對每個變量單獨執行的,因此如果我可以找到一些方法來循環變量列表,然後創建一個輸出爲excel或僅僅是一個結果組合表,這些結果清楚地表明結果屬於哪個到什麼變量。

問題是我只知道在一個datastep中循環工作,我將如何得到這個爲proc步驟工作?我可以寫一個proc步驟的宏,然後將它嵌入到一個datastep中?這會導致它正常運行嗎?即

data _NULL_; 
set table_of_vars; 

do i=1 to (number of vars in the table); 

_n_ = i; 

%let var = _n_; 
%macro_proc_summ(&var.); 

end; 

和隨後的另一個代碼合併單個輸出,或者宏也可能產生總是附加信息的輸出。

很明顯,代碼很粗略,但從概念上可以工作?

編輯:爲了更清楚一點,這是代碼看起來像沒有循環的地方。

%macro Analysis(var); %macro _; %mend _; 
proc summary data=masterdata nway missing; 
class &var.; 
output out = &var._summ (drop = _type_); 
run; 
%mend; 
endrsubmit; 

%Analysis(var1); 
%Analysis(var2); 
%Analysis(var3); 
. 
. 
. 
. 
%Analysis(var100); 

從這裏我們既可以:

  • 出口var1_summ,var2_summ到Excel單元格A1,D1等
  • 還是第一次我們每一個人的總結合併成一張大桌子,然後導出到 一些圖形應用程序來觀察趨勢。

無論哪種方式,你可以看到這些是單獨的Proc步驟,這可以在循環中更快地完成。

+0

您可以一次傳遞多個變量PROC總結和產生的組合輸出。你根本不需要一個宏。 – Reeza

+0

@Reeza - 我覺得呢?我想「分類」一堆變量,並在單步完成時,輸出不會唯一地組合變量內的各個級別......例如,Var1可以是Shoes,而Var2可以是Shirt,並且它們會If我將它們全部列在一個總結中,它將奇怪地合併信息...... – Wolfspirit

+0

你將如何處理數字和字符變量?您必須以某種方式處理它們,以便您可以將它們堆疊起來。聽起來你想要表1報告文件 - 總結?如果是這樣,你應該搜索lexjansen.com上有很多例子。否則,請使用call execute循環訪問值。特別是如果參數在您的數據集中。 – Reeza

回答

0

如果您不希望輸出表使用Proc Tabulate。

proc tabulate data=sashelp.class out=summary1; 
class sex age; 
var weight; 
table sex age, weight*(n mean min max median); 
run; 

data summary2; 
set summary1; 
Var=coalescec(sex, put(age, 2.)); 
drop age sex _:; 
run; 

編輯:不是PROC製表,如果只想N,使用PROC FREQ

*Run frequency for tables; 
ods table onewayfreqs=temp; 
proc freq data=sashelp.class; 
    table sex age; 
run; 

*Format output; 
data want; 
length variable $32. variable_value $50.; 
set temp; 
Variable=scan(table, 2); 

Variable_Value=strip(trim(vvaluex(variable))); 

keep variable variable_value frequency percent cum:; 
label variable='Variable' 
    variable_value='Variable Value'; 
run; 

*Display; 
proc print data=want(obs=20) label; 
run; 
+0

我需要輸出,但是您的解決方案明確捕獲了我正在嘗試執行的操作,特別是在「weight_N」列中 – Wolfspirit

+0

摘要2表具有輸出。 – Reeza

+0

快速免責聲明 - 我對Tabulate不太熟悉。據我所知,如果「n」是我需要的唯一統計量,那麼我並不需要使用權重變量。 但是,當我試圖將上面的代碼應用於我自己的數據時,來自N的值與使用proc摘要由_freq_列生成的輸出不同。爲什麼是這樣? @Reeza – Wolfspirit