在前面几篇中我们已经介绍过很多次sas数据输出到excel的方法了,包括分组输出、分sheet页输出;本次在这里再次提出输出到excel的方法,主要是考虑到一些别样的方法,令人耳目一新的思路。
一、程序思路首先,在data步中只读取到数据集的数据量信息,然后stop退出,这样处理效率非常高。其次,在分页输出时,预先规定每页好需要输出的数量,然后通过firstobs和obs控制每页输出量。
二、程序如下:
options mprint;
%macro out_put_xls(dset,fdir,num=65000);
data null;
set &dset.nobs=obs;
call symput("obs_cnt",obs);
stop;
run;
libname ex excel "&fdir.";
%do i=1%to &obs_cnt.%by &num.;
%let k=%sysfunc(int(%eval((&i+&num)/&num)));
%let j=%sysfunc(int(%eval(&num*&k)));
data ex.第&k.页(dblabel=yes);
set &dset.(firstobs=& iobs=&j);
run;
%end;
%mend;
%out_put_xls(sashelp.bweight,D:\Bweight.xlsx,num=10000);
在该宏中:
set语句nobs=选项获取复制数据集观测对象总数obs;
将obs值赋值给宏变量obs_cnt;
&num规定每页输出观测对象数,K值获取每个循环页码数;
J确定每个页码最末观测对象序号n;
最后通过限定firstobs和obs来控制数据集的分页输出。