2015-11-07 102 views
0

我需要獲得列中所有值的總和(下面代碼中的「var1」)。據我所知,這樣做如下:使SAS中的PROC MEANS語句產生一個變量而不是數據集

proc means data = somedata sum var1; 
output out = sumtable sum = sum; 
run; 

我想在下一步中用作變量的總和。上面的OUTPUT語句是否可以將總和存儲在一個新變量中,而不是將其寫入一個新的數據集?如果是這樣,這是什麼語法?

回答

1

總之,沒有。您可以將該值作爲文本字符串存儲到宏變量中,如Reeza所示,但如果您想將其作爲變量存儲,則該變量需要位於數據集中。

如果您想將某個變量用於某些事物,將該變量帶回未來的數據步驟並不難。只需參考它存儲的數據集。

proc summary data=sashelp.class ; 
    var height weight ; 
    output out=class_summary sum=total_height total_weight; 
run; 
data new ; 
    set sashelp.class; 
    if _n_=1 then set class_summary; 
    fraction_of_total_wt = weight/total_weight; 
    fraction_of_total_ht = height/total_height; 
run; 
+0

畢竟,我認爲這個,而不是宏觀變量,是我的方式。 (雖然這引發了它自己的問題,但這是一個單獨的問題。) – Mhoram

1

這聽起來像你想要一個宏變量,而不是數據步驟。 在我看來,這很容易通過PROC SQL步驟而不是PROC MEANS來完成。 您的PROC MEANS看起來也不錯,VAR1不屬於那裏,並會產生錯誤。

proc sql; 
select sum(var1) into :sum_var1 
from somedata; 
quit; 

%put &sum_var1; 

您可以使用& sum_var1將解析爲變量的值訪問你的代碼的其他部分的變量。值得注意的是,所有宏變量都以文本形式存儲。

+0

謝謝!爲了我的目的(我沒有堅持總和是一個變量;宏觀變量足夠好),這很好。 – Mhoram

相關問題