SAS宏变量操作:如何在Targetyear1后添加后缀MN?
SAS宏变量后追加字符串的解决方法
问题原因
当你使用&Targetyear1_MN时,SAS宏处理器会将**Targetyear1_MN整体识别为宏变量名**,而非把Targetyear1作为变量、MN作为后续字符串。由于你未定义过Targetyear1_MN这个宏变量,自然无法得到预期的2021MN结果。而MN_&Targetyear1能正常运行,是因为下划线不会被宏处理器当作变量名的一部分,它能正确识别&Targetyear1是独立的宏变量。
正确实现方式
使用句号(.)作为宏变量名的终止符,明确告诉宏处理器哪里是变量名的结束,哪里是后续字符串的开始。示例代码如下:
%let Targetyear1=2021; %put &Targetyear1.MN; /* 输出结果:2021MN */
这里的句号仅作为宏变量的终止标记,宏处理器解析时会自动去掉这个句号,将宏变量的值2021与后续字符串MN拼接。
如果需要在宏变量和字符串之间保留一个实际的句号,才需要写两个连续的句号:
%put &Targetyear1..MN; /* 输出结果:2021.MN */
测试验证
运行以下代码可以直观看到不同写法的效果:
%let Targetyear1=2021; %put &Targetyear1_MN; /* 未定义该变量时,输出原字符串或提示变量不存在 */ %put &Targetyear1.MN; /* 输出:2021MN */ %put &Targetyear1..MN; /* 输出:2021.MN */ %put MN_&Targetyear1; /* 输出:MN_2021 */
内容的提问来源于stack exchange,提问作者Ben
相关产品推荐
相关产品推荐

