我有一个数据集" Dairy1"变量标记为' 240,241,242 ..."但实际名称是' _240,_241,_242 ......'。
如何删除前缀" _"从所有这些变量的名称?我尝试在SAS 9.4中使用以下代码,但它不起作用。
**proc sql noprint;
select cats(name,'=',scan(name, 1, '_'))
into :suffixlist
separated by ' '
from dictionary.columns
where libname = 'WORK' and memname = 'Dairy1' and '240' = scan(name, 2, '_');
quit;
%put &suffixlist.;
data want;
set Dairy1;
rename &suffixlist.;
run;**
它向我展示了以下内容:
警告:未解析显式符号引用SUFFIXLIST。 错误22-322:语法错误,期望以下之一:un nombre ,;。
提前致谢
答案 0 :(得分:0)
我反过来做了类似的解决方案,它为变量添加了后缀。 这样做,是创建单个字符串,其中包含所有变量rename-commands。
请注意,这有点愚蠢,因为它会删除所有字符。只需在 data sjm_tmp2 中修改逻辑以满足您的需求。
%macro remove_str(Dataset, str);
proc contents noprint
data=work.&dataset out=sjm_tmp(keep=NAME);
run;
data sjm_tmp2;
set sjm_tmp;
help= tranwrd(NAME, "&str.", '');
foobar=cats(name, '=',help);
run;
proc sql noprint;
select foobar into :sjm_list separated by ' ' from sjm_tmp2;
quit;
proc datasets library = work nolist;
modify &dataset;
rename &sjm_list;
quit;
proc datasets library=work noprint;
delete sjm_tmp sjm_tmp2 ;
run;
%mend;
使用代码进行测试:
data test;
_a=1;
_b=1;
_c=1;
_d=1;
_e=1;
_f=1;
run;
%remove_str(test, _);