SAS 学习笔记(九)— SAS宏

本文介绍了SAS宏变量的定义、引用和间接引用,强调了宏变量在输出及标题语句中的使用规则。还讨论了宏函数,特别是symputx和symget的功能,以及如何在SQL过程步中创建和传递宏变量。最后,提到了全局和局部宏变量的区别以及宏变量的删除方法。
摘要由CSDN通过智能技术生成

宏变量

可以替代重复的变量和代码

  • 定义:%let indvars = ;

  • 引用 (解析):& (对文本串的替换)

  • 间接引用:& && &&&
    宏处理器对多个“&”处理规则是:从左到右扫描,若宏变量前仅含有一个“&”,则解析该宏变量;否则将相邻的两个“&”替换成一个“&”,重复上述扫描过程,直到解析过程完成

  • 输出:%put text; (后面默认就是文本串,不需要加引号;与put语句不同)

  • 输出所有系统自带 / 用户自定义 / 所有 的宏变量:%put _automatic_/_user_/_all_
    → e.g. title ="today's date is &SYSDATE9 and today is &SYSDAY";
    当宏变量被嵌入在标题语句中,只能用双引号不能用单引号

  • 分隔符 . (句点)
    宏变量被引用时,SAS无法识别连接其后的文本,需要使用分隔符告知分隔符前的为宏变量部分。使用句点.作为宏变量分隔符。
    → e.g. %LET libref=sashelp; proc print data=&libref..class; run;

  • 全局宏变量(由宏程序之外定义) VS. 局部宏变量

  • 删除:%symdel 宏变量名1 宏变量名2;


宏函数

宏字符串处理函数的参数可以是任意文本和(或)宏触发器:固定文本、宏变量引用、宏函数、宏调用。
固定文本参数不需要引号

  • 常用函数
宏函数 使用方法 功能
%upcase %upcase(string) 转换小写字母为大写字母
%substr %substr(string, n1, n2) 从字符串中提取子串
%scan %scan(string, n) 从字符串中提取一个词
%index %index(string) 在字符串中搜索指定文本
%eval 进行算术运算和逻辑运算
%sysfunc %str(argument) 执行SAS函数
%str 引用特殊字符(屏蔽(删除正常含义)特殊符号:+ - * / , < > = ; ’ " LT EQ GT LE GE NE AND OR NOT blank)
%nrstr %nrstr(title “S&P 500”; ) 引用特殊字符,包括SAS触发器

symputx例程和symget函数

实现在不同过程步中传递数据

  • Symputx例程 —— 把数据步的信息传给宏变量
    CALL SYMPUTX(“new_macro-variable”, value_in_string)
    • 参数1是我们正在创建的宏变量将存储数据步正在传递出的信息
    • 参数2是字符串格式的值
    • 新的宏变量是文本型,用匹配引号括起来
  • Symget函数 —— 把宏变量的信息传给数据步
    symget(“macro-variable”)
    • 参数可以是宏变量的名字,字符串变量或者字符表达式。
  • 动态赋值宏变量
proc means data = hsb2 n;
  var write;
  where write>=55;
  output out=w55 n=n;
run;
proc print 
  • 5
    点赞
  • 82
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值