我的公司刚刚从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;
答案 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摘要是有意义的。