我有一个宏变量,如下所示
%let myGrp = ('ctry', 'age')
我想要做的就是创建一个名为TestGrp
的数据集,其中包含以下内容
GROUPS
ctry
age
我无法弄清楚如何做到这一点。非常感谢任何帮助
谢谢!
答案 0 :(得分:3)
SCAN
是最能帮助您的功能。赔率是你的整个方法可以改善,但从这开始......
%let myGrp = ('ctry', 'age');
data yourdata;
do _t = 1 to countc("&mygrp",",")+1;
groups = scan("&myGrp",_t,"'(,) ");
output;
end;
run;
SCAN
可以使用任意数量的分隔符,并且可以在此处删除您不想要的字符。从长远来看,%let mygrp=ctry,age;
也同样如此 - 报价等也无济于事。
答案 1 :(得分:0)
这是一个有效的例子(对不起西班牙名字):
%let sListaDeValoresAutorizados= ('ctry', 'age');
%LET LISTA_VALORES = %UNQUOTE(%sysfunc(compress("&sListaDeValoresAutorizados","(')")));
DATA yourdata;
%DO _t = 1 %TO %sysfunc(countw("&LISTA_VALORES",','));
GROUPS = strip(scan("&LISTA_VALORES",&_t,","));
OUTPUT;
%END;
RUN;