繁体   English   中英

在SAS中使PROC MEANS语句产生变量而不是数据集

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM