删除最后3个字母设置sas变量

时间:2013-09-20 13:08:07

标签: sas

我想删除SAS数据集中一组变量的最后3个字母。 (必须连接2个数据集。)

在第一组中,变量以例如命名: abc, def, ghi ...

在第二组中,他们被命名为: abc_1A, def_1A, ghi_1A ......

如何从100多个变量中删除'_1A'?我不想简单地将“_1A”添加到我的第一个数据集

由于

1 个答案:

答案 0 :(得分:2)

有几个选择。这是一个“安全”选项和一个“不安全”选项。

安全选项:

编写一个宏,将变量重命名为不带_1A的名称。  参数:var =变量名,len =最终变量名所需的长度。;

%macro rename_shorter(var=,len=);
&var. = %substr(&var.,1,&len.)
%mend rename_shorter;

从dictionary.columns创建一个调用列表;

proc sql;
select cats('%rename_shorter(var=',name,',len=',length(name)-3,')') 
 into :renamelist separated by ' '
 from dictionary.columns
 where libname='SASHELP' and upcase(memname)='CLASS';
quit;

调用该列表;

data want;
set sashelp.class(rename=(&renamelist.));
run;

不安全的选项,在它没有检查事物是否正确对齐的意义上是

proc sql;
create table want as 
 select * from have_namedright H
 outer union corr
 select * from have_namedwrong W
;
quit;