2024-05-30 初级SAS学习笔记12(Macro)

        SAS宏的执行逻辑是先将宏语句(macro statement) 传递给宏处理器(macro processor)对宏语句进行解码,生成标准的SAS程序(SAS code),然后SAS对解码后的SAS程序进行编译和执行。

        SAS宏包括两部分:宏名称和宏变量名,宏名称以%为前缀,宏变量名以&为前缀,宏变量名与标准的SAS变量类似,但是只含有一个值,且该值的储存形式的字符,变量名、数字、文本等都可以成为宏变量的值;

        宏变量有局部宏变量和全局宏变量,定义在宏内部的宏变量为局部宏变量,定义在宏外部的变量为全局宏变量;在使用宏之前必须提前打开宏选项,SAS默认是打开的,也可以下面命令来查看宏选项是否打开:

        proc  options option=macro;

        run;

        比较好用的写SAS宏的方式:明确分段撰写宏程序,首先撰写标准的SAS程序,如果跑通无误,则可以一次修改一个特征将该段程序变成SAS宏语言。

        值得注意的是:%INCLUDE,%LIST,%RUN 语句不是SAS宏名称。

        SAS宏处理解码宏变量时会将宏变量替换成宏变量的值放入SAS程序。以下是定义宏变量的几种方式:

%let macro-variable-name=value(宏变量与标准SAS变量一样不超过32字符,以字母或_开头,含字母、数字和下划线),比如:

        %let iterations=10;

        %let country=New Zealand;

值得注意的是宏变量的值即使是字符也不需要引号,SAS会自动把= 和;之间的内容作为宏变量的值,但是会去除收尾的空格;

宏变量的使用是在宏变量名称前加上&前缀;如:

        DO i=1 to &iterations;

        TITLE "Address in &country";

SAS宏处理器解码后如下:

        DO i=1 to 10;

        TITLE "Address in New Zealand";(SAS必须是双引号才能在引号内引用宏)

宏变量与普通文本可以连接在一起,SAS也只会对&后至空格\"."\";"前的内容识别为宏变量名,如果普通文本在宏变量前面则可以直接连接,如果普通文本在宏变量后面则需要在两者之间加“.”;如下所示:

%let region=west;

%let myname=sam;

解码前                                                           解码后:

office="NorthAmerican&region":                   office="NorthAmericanwest";

office="&region.coast":                                  office="westcoast";

data &myname..sales;                                   data sam.sales;

data &myname&region.ern_sales;                 data samwestern_sales;

启动SAS后,SAS宏处理器会自动创建一些宏变量,比如:

&sysdate          sas启动日期

&sysday           sas启动日(如:周一)

&sysnobs         最近一个sas数据集的观测数

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值