对SAS数据集中的变量名批量截取
(2014-04-11 19:54:12)
标签:
sasdatasetsdictionarytranspose |
分类: SAS笔记 |
在对SAS数据集进行数据处理时,通常会遇到需要对变量名进行修改或者截取,这个时候通常需要用宏来进行处理,下面采用两种方法来对数据集变量进行批量截取:
1.采用transpose过程:
%macro test(library,table,k1,k2);
proc sql;
select count(*) into:t from &library..&table;
quit;
data test;
set &library..&table;
run;
proc transpose data=test out=test1 name=name;
var _all_;
run;
data test2;
set test1;
name=substr(name,&k1.,&k2.);
run;
proc transpose data=test2
out=&library..&table(drop=_name_);
var COL1-COL%left(&t.);
id name;
run;
%mend;
2.采用datasets过程:
%macro test1(lib,table,k1,k2);
proc sql noprint;
select nvar into:num_var from dictionary.tables where
libname="&LIB" and memname="&TABLE";
select name into:var1-:var%left(&num_var) from
dictionary.columns where libname="&LIB" and
memname="&TABLE";
quit;
proc datasets lib=&lib;
modify &table;
rename
%do i=1 %to &num_var;
&&var&i=%substr(&&var&i,&k1,&k2)
%end;
;
quit;
%mend;
如果要对数据集变量批量进行其它处理,也可以按照此模板,只需要更改“文本替换”那一行就行了。