Sas应用之数据输出excel(二)

在前面几篇中我们已经介绍过很多次sas数据输出到excel的方法了,包括分组输出、分sheet页输出;本次在这里再次提出输出到excel的方法,主要是考虑到一些别样的方法,令人耳目一新的思路。

一、程序思路首先,在data步中只读取到数据集的数据量信息,然后stop退出,这样处理效率非常高。其次,在分页输出时,预先规定每页好需要输出的数量,然后通过firstobsobs控制每页输出量。

二、程序如下:

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=&i obs=&j);

      run;

     %end;

%mend;

%out_put_xls(sashelp.bweight,D:\Bweight.xlsx,num=10000);

在该宏中:

  1. set语句nobs=选项获取复制数据集观测对象总数obs

  2. obs值赋值给宏变量obs_cnt

  3. &num规定每页输出观测对象数,K值获取每个循环页码数;

  4. J确定每个页码最末观测对象序号_n_

  5. 最后通过限定firstobsobs来控制数据集的分页输出。

举例,在sashelp逻辑库的Bweight数据集共50000个观测对象,如果想将这个数据集拆分成5excel表存储,那么每页需要放10000个,

上述宏中,宏变量num=10000,obs_cnt=obs=50000,

在第一个循环中,

K=%sysfunc(int(%eval((&i+&num)/&num)))=(1+10000)/100000取整为1

j=%sysfunc(int(%eval(&num*&k)))=10000*1;firstobs=1,obs=10000;

那么第一页就是bweight的前10000个观测对象,一次类推。

                                           编辑:任丽

微信号: sas应用分析

简书:http://www.jianshu.com/p/0e787b555768
原文链接:
https://mp.weixin.qq.com/s?__biz=MzIyNTE2MzM3MA==&mid=2650116647&idx=1&sn=60727596e55e8bb0d0da69bb17426f34&scene=1&srcid=0717ozJX5pD7MxdklwaOlWVN&pass_ticket=zNwjzm3JBFGW%2Bp%2F%2Bmgkw8g%2FNFG3t6EfHUODycUJN2DC%2BTOZIJSI27gv1vv3VKu%2F5#rd

  • 0
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值