|
|
沙发

楼主 |
发表于 2009-8-20 16:22:36
|
只看该作者
Re: 想进行一个循环,每次循环取数据集中的一列,怎么表示?
[code:3atehgi1]data a;
input a $ x y z;
datalines;
a 1 2 3
b 4 5 6
c 7 8 9
d 10 11 12
;
%macro keep_var(dsname);
options nosymbolgen nomprint;
%let dsid=%sysfunc(open(&dsname,i));
%let varnum=%sysfunc(attrn(&dsid,nvars));
%let varlist=;
%do i=1 %to &varnum;
%let varlist=&varlist %sysfunc(varname(&dsid,&i));
%end;
%let rc=%sysfunc(close(&dsid));
%do i=1 %to &varnum;
options nonotes;
data ds_part_&i (keep=%scan(&varlist,&i));
set &dsname;
run;
options notes;
%put NOTE: *** 已为变量 %scan(&varlist,&i) 创建数据集 ds_part_&i. ***;
%end;
%mend;
%keep_var(work.a)[/code:3atehgi1] |
|