SAS动态声明宏变量(SAS dynamically declaring macro variabl

2019-10-29 04:26发布

我公司刚刚与R切换到SAS,我将我的很多R代码里面到SAS。 我有在SAS动态地声明变量(宏变量)一个巨大的问题。

例如我的过程之一,需要采取一列的平均值,然后在很多步骤应用它在整个代码。

%let numm =0;

我曾尝试以下我numm变量,但两种方法不工作,我似乎无法在网上找到任何东西。

PROC MEANS DATA = ASSGN3.COMPLETE mean;
#does not work
&numm = VAR MNGPAY;
run;

Proc SQL;
#does not work
&numm =(Select avg(Payment) from CORP.INV);
quit;

Answer 1:

我会强烈建议购买一本书上的SAS或SAS公司培训采取一类。 SAS编程II是一个很好的起点(如果你还没有设定任何其他编程我,但这并不听起来像的情况下)。 你的代码表明你需要它。 距离R.一个完整的模式转变

这就是说,试试这个:

proc sql noprint;
select mean(payment) into :numm from corp.inv;
quit;

%put The mean is: &numm;


Answer 2:

这里的PROC汇总/数据步相当于:

proc summary data = corp.inv;
  var payment;
  output out = inv_summary mean=;
run;

data _null_;
  set inv_summary;
  call symput('numm',payment);
run;

%put The mean is: &numm;

PROC SQL是一个更紧凑的方法,如果你只是想要一个简单的算术平均值,但如果你需要更复杂的统计是有意义的使用PROC总结。



文章来源: SAS dynamically declaring macro variable
标签: sas