[英]Making the PROC MEANS statement in SAS produce a variable instead of a dataset
我需要获取列中所有值的总和(以下代码中的“ var1”)。 据我所确定,这是按照以下步骤完成的:
proc means data = somedata sum var1;
output out = sumtable sum = sum;
run;
我想在下一步中用作变量的总和。 是否可以使上面的OUTPUT语句将总和存储在新变量中,而不是将其写入整个新数据集中? 如果是这样,其语法是什么?
听起来您需要宏变量而不是数据步骤。 在我看来,这很容易通过PROC SQL步骤而不是PROC MEANS来完成。 您的PROC MEANS看起来也不正确,VAR1不属于那里,并且会产生错误。
proc sql;
select sum(var1) into :sum_var1
from somedata;
quit;
%put &sum_var1;
您可以使用&sum_var1访问代码中其他部分的变量,该变量将解析为变量值。 值得注意的是,所有宏变量都存储为文本。
一言以蔽之。 您可以按照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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.