我需要获取列中所有值的总和(" var1"在下面的代码中)。据我所知,这完成如下:
proc means data = somedata sum var1;
output out = sumtable sum = sum;
run;
我希望在下一步中用作变量的总和。上面的OUTPUT语句是否可以将总和存储在一个新变量中,而不是将其写入一个全新的数据集?如果是这样,它的语法是什么?
答案 0 :(得分:1)
听起来你想要一个宏变量而不是数据步骤。 在我看来,这最容易通过PROC SQL步骤而不是PROC MEANS来完成。 您的PROC方式看起来也不正确,VAR1不属于那里并会产生错误。
proc sql;
select sum(var1) into :sum_var1
from somedata;
quit;
%put &sum_var1;
您可以使用& sum_var1访问代码的其他部分中的变量,它将解析为变量值。值得注意的是,所有宏变量都存储为文本。
答案 1 :(得分: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;