【发布时间】:2014-08-31 03:17:55
【问题描述】:
我的公司刚刚从 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;
【问题讨论】:
-
宏变量通常不应该存储数据值。它们只是文本。除此之外,它们没有数值精度的概念,因此在转换为宏变量时会丢失精度。 SAS 在很多方面更像 SQL 而不是 R。将您的方法存储在数据集中。
-
是的,我确实注意到 SAS 更像是一个可以执行统计的数据管理系统。 R 似乎更适合高级分析。
-
SAS 与 R 一样能够进行高级分析,而且在某些方面要快得多。它只是不同,需要以不同的方式进行编程。您在上面所做的就像在函数内部使用 C(或 R,就此而言)中的全局变量;你不会在 SAS 中这样做。但是,通常可以通过更简单的方式,使用更惯用的过程来实现相同的结果。
标签: sas