加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

对SAS数据集中的变量名批量截取

(2014-04-11 19:54:12)
标签:

sas

datasets

dictionary

transpose

分类: 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;

如果要对数据集变量批量进行其它处理,也可以按照此模板,只需要更改“文本替换”那一行就行了。

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有