我需要獲得列中所有值的總和(下面代碼中的「var1」)。據我所知,這樣做如下:使SAS中的PROC MEANS語句產生一個變量而不是數據集
proc means data = somedata sum var1;
output out = sumtable sum = sum;
run;
我想在下一步中用作變量的總和。上面的OUTPUT語句是否可以將總和存儲在一個新變量中,而不是將其寫入一個新的數據集?如果是這樣,這是什麼語法?
我需要獲得列中所有值的總和(下面代碼中的「var1」)。據我所知,這樣做如下:使SAS中的PROC MEANS語句產生一個變量而不是數據集
proc means data = somedata sum var1;
output out = sumtable sum = sum;
run;
我想在下一步中用作變量的總和。上面的OUTPUT語句是否可以將總和存儲在一個新變量中,而不是將其寫入一個新的數據集?如果是這樣,這是什麼語法?
總之,沒有。您可以將該值作爲文本字符串存儲到宏變量中,如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;
這聽起來像你想要一個宏變量,而不是數據步驟。 在我看來,這很容易通過PROC SQL步驟而不是PROC MEANS來完成。 您的PROC MEANS看起來也不錯,VAR1不屬於那裏,並會產生錯誤。
proc sql;
select sum(var1) into :sum_var1
from somedata;
quit;
%put &sum_var1;
您可以使用& sum_var1將解析爲變量的值訪問你的代碼的其他部分的變量。值得注意的是,所有宏變量都以文本形式存儲。
謝謝!爲了我的目的(我沒有堅持總和是一個變量;宏觀變量足夠好),這很好。 – Mhoram
畢竟,我認爲這個,而不是宏觀變量,是我的方式。 (雖然這引發了它自己的問題,但這是一個單獨的問題。) – Mhoram