SAS动态声明宏变量

时间:2014-08-30 00:51:34

标签: sas

我的公司刚刚从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;

2 个答案:

答案 0 :(得分:0)

我强烈建议您购买SAS上的书或从SAS培训课程中学习。 SAS Programming II是一个很好的起点(编程I,如果你还没有编程其他任何东西,但这听起来不是这样)。您拥有的代码显示您需要它。这是从R。

的完整范式转变

那说,试试这个:

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

%put The mean is: &numm;

答案 1 :(得分:0)

这是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摘要是有意义的。

相关问题