SAS,结合字符串

时间:2018-04-18 16:08:25

标签: sas

我有一个数据集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;

2 个答案:

答案 0 :(得分:1)

只需使用变量列表。您可以将列表存储到宏变量中,以便于编辑。

%let keylist=var1 var2 var5 ;

然后您可以在任何需要的地方使用宏变量。

data ideal_2;
  set test1;
  key=cats(of &keylist);
run;

答案 1 :(得分:0)

如果变量具有命名约定,您可以使用类似下面的内容,它使用冒号运算符连接以前缀VAR开头的所有变量。

key = catt(of var:);