2010-10-20 25 views

回答

4

SAS用户有能力创建自己的SAS PROC的。他们必须许可SAS/Toolkit和C语言或其他语言的代码。

SAS有许多不同的部分。宏是(或曾经是)SAS中最多(也可能是唯一)的通用工具,它可以将(几乎任何但不是全部)部件放在一起。鉴于宏观(语言)是多么原始和奇怪,这有点有趣,但却是真实的。

+0

感谢您关于SAS/Toolkit的提醒 - 我已经忘记了该产品。 – cmjohns 2010-10-21 16:58:06

4

这就好比问我们为什么当我们有UNIX中可用的所有程序时,我们有Perl,Python,ksh,bash等等。宏是脚本语言,它为用户提供了很大的灵活性并可以控制他们希望SAS执行的操作。您也可以轻松生成动态代码。现有的procs在他们可以作为输入以及作为输出获得的东西方面相当严格。 Proc FCMP已经向用户定义的函数打开了数据步骤,但这仍然无法替代您使用宏语言获得的灵活性。

+0

+1提到SAS宏代码可以动态编写代码。这在我看来是编写宏的主要原因。 – 2010-10-22 18:44:44

1

您可以在没有授权工具包的情况下创建自定义宏,并且我记得很多人似乎都使用SAS Toolkit进行自定义过程。

宏帮助运行的程序反复使用自定义参数和是无价的变量操纵和创造

特效一般是输出设备。宏也可以帮助重复数据步骤操作。

这里是一些代码

enter image description here

+0

也可以使用键盘快捷键。我发现他们更方便 - 调用特效:) – 2012-06-08 11:20:00

3

有许多用途和宏的高级功能,但我主要就使用它们,所以我可以尝试留真实的DRY Princicple。如果您发现自己处于经常重复代码块的情况,则可能需要执行此操作。例如,我总是将数据集导出为ex​​cel。如果我最终做了在我的代码几次,我只是把代码中的宏:

%macro export_set_excel(data,path,filename,sheetname); 
    PROC EXPORT DATA= &data. OUTFILE= "&path.&data." DBMS=EXCEL REPLACE; 
     SHEET="&sheetname."; 
     NEWFILE=YES; 
    RUN; 
%mend export_set_excel; 

然后当我在我的代码一起去。我做一个数据集,我要出口的话,我可以只写:

%export_set_excel (data=MyDataSet, path=C:\Temp\, filename=mydata.xlsx, sheetname=exportedData); 

这是一个简单的线我必须写,而不必写7个或8行30次在一个文件中30次。它可以更容易地追踪错误,如果我想改变一些关于如何导出的内容,我只需要在一个地方进行更改。

我使用它的不仅仅是导出,而是应该给你一个大致的想法。

如果您熟悉其他语言,您会发现sas宏语言很缺乏和繁琐,但它绝对比没有好。

2

大多数SAS程序对数据执行特定的操作。宏允许对SAS代码块进行运行时条件处理,例如使用DO循环在不同数据集上重复进行过程调用,或根据文件是否存在来决定运行数据步。虽然代码对于新手来说看起来笨重,但是一旦学习BASE SAS,拾取起来实际上相对容易,因为语法几乎完全相同(对于风味来说,%s和@s大致相同)。