我有一个数据集test1,我想生成一个键,它是任何指定变量的组合。例如,ideal_1中的键,或ideal_2中的键。我需要为此编写一个宏,但我面临的挑战是,vars的数量并不固定,正如你在ideal1中看到的那样,它是2的组合,而在理想3中它是3的组合。 / p>
data test1;
input var1$ var2$ var3$ var4$ var5$ var6$;
datalines;
1 a a b e
2 a f b e
3 a a a a
1 b a a a
2 a f b e
;
run;
data ideal_1;
set test1;
key=strip(var1)||strip(var2);
run;
data ideal_2;
set test1;
key=strip(var1)||strip(var2)||strip(var5);
run;
答案 0 :(得分:1)
只需使用变量列表。您可以将列表存储到宏变量中,以便于编辑。
%let keylist=var1 var2 var5 ;
然后您可以在任何需要的地方使用宏变量。
data ideal_2;
set test1;
key=cats(of &keylist);
run;
答案 1 :(得分:0)
如果变量具有命名约定,您可以使用类似下面的内容,它使用冒号运算符连接以前缀VAR开头的所有变量。
key = catt(of var:);