Sas 更改宏变量字符值
我有以下宏变量:Sas 更改宏变量字符值,sas,sas-macro,Sas,Sas Macro,我有以下宏变量: %LET TEST= A1 A2 A3 A4 A5; 我最初的目标是为每个字符添加前缀,其中包括: 测试1=LG_A1 LG_A2 LG_A3 LG_A4 LG_A5 我尝试通过以下方式使用tranwrd函数来实现这一点: %Let TEST1= %SYSFUNC(TRANWRD(&TEST, "A", "LG_A")); 或 但两种方法都无法得到结果 有没有办法使用其他方法或tranwrd函数来获得所需的结果?一种方法是循环遍历所有单词,并为每个单词添加前缀 %L
%LET TEST= A1 A2 A3 A4 A5;
我最初的目标是为每个字符添加前缀,其中包括:
测试1=LG_A1 LG_A2 LG_A3 LG_A4 LG_A5
我尝试通过以下方式使用tranwrd函数来实现这一点:
%Let TEST1= %SYSFUNC(TRANWRD(&TEST, "A", "LG_A"));
或
但两种方法都无法得到结果
有没有办法使用其他方法或tranwrd函数来获得所需的结果?一种方法是循环遍历所有单词,并为每个单词添加前缀
%LET TEST= A1 A2 A3 A4 A5;
%macro add_prefix();
%global TEST1;
%let TEST1 =;
%do i = 1 %to %sysfunc(countw(&TEST));
%let TEST1 = &TEST1 LG_%scan(&test,&i);
%end;
%mend;
%add_prefix();
%put &TEST1;
刚才注意到,您也可以删除符号以获得相同的结果。但既然你已经试过了,但没有得到正确的结果,我就不知所措了
%Let TEST1= %sysfunc(TRANWRD(&TEST, A, LG_A));
您第二次尝试不使用引号对我来说很好,您在其他地方有一个不同的错误。使用正则表达式很方便。%设test1=%sysfuncprxchanges/\w{2}/LG_$1/,-1,&test;
%Let TEST1= %sysfunc(TRANWRD(&TEST, A, LG_A));