如何在SAS的Libname语句中使用宏变量替代硬编码年份
用宏变量替换LIBNAME语句中的硬编码年份
有两种常用方式实现需求:
方法1:用双引号包裹路径(推荐)
SAS会自动解析双引号里的宏变量,直接替换就行:
%let year = 2022; libname LIB1 "aaa/bbb/ccc/ddd/&year./fff";
注:&year后面的.是用来明确宏变量边界的,避免和后面的/混淆,这里不加也能正常解析,但养成加.的习惯更稳妥。
方法2:保留单引号,通过宏拼接实现
如果一定要用单引号,可以用宏字符串拼接的方式,让宏变量先被解析再组合成完整路径:
%let year = 2022; libname LIB1 %str('aaa/bbb/ccc/ddd/')&year.%str(/fff');
或者用SAS字符串连接符||来拼接:
%let year = 2022; libname LIB1 'aaa/bbb/ccc/ddd/' || "&year." || '/fff';
内容的提问来源于stack exchange,提问作者James Edwin
相关产品推荐
相关产品推荐

