请选择 进入手机版 | 继续访问电脑版
楼主: liuliuqiu
3929 2

[有偿编程] SAS如何实现数据拆分 [推广有奖]

  • 6关注
  • 2粉丝

副教授

62%

还不是VIP/贵宾

-

威望
0
论坛币
2340 个
通用积分
8.9561
学术水平
3 点
热心指数
5 点
信用等级
5 点
经验
14393 点
帖子
429
精华
0
在线时间
1113 小时
注册时间
2009-3-24
最后登录
2024-2-29

liuliuqiu 发表于 2018-1-14 22:14:12 |显示全部楼层 |坛友微信交流群
5论坛币
求助利用SAS软件将一个excel表拆分成多个。
有一个excel表含有N个人的信息,现在想把每个人的信息单独形成一个新的excel表,请问该如何实现,谢谢!
例如:
id      age    work    .....
1       ..       ...
2      ..        ...
...
1000  ..      ...
...
N       ..     ....
根据id拆分成N个单独的表
sheet1
id      age    work    .....
1       ..       ...
sheet2
id      age    work    .....
2       ..       ...
...
sheetN
id      age    work    .....
N       ..       ...

关键词:如何实现 Excel表 sheet EXCEL sas软件
流水不朽 发表于 2018-1-15 09:37:58 |显示全部楼层 |坛友微信交流群
/*用于专门导出excel的宏*/
%macro exp(id,out_name,n);
data        tmp;
        set &in_data.;
  where id='&id.';   /*id是字符串类型*/
  where id=%sysevalf(&id.);/*id是数值类型*/
run;
/*按你的意思是每个客户信息生成单独的excel,但是后面的
sheet名字又不一样,所以,两种都帮你处理好了
1、如果是新的excel,则xls.sheet&n.改为xls.sheet
2、如果是单独的excel,不同的sheet,则&out_name._&n..xlsx 改为&out_name..xlsx
*/
        libname xls excel "C:\excel\&out_name._&n..xlsx";
                data        xls.sheet&n.(dblabel=yes);
                        set tmp;
                run;
        libname xls;
%mend exp;
/*处理excel导入*/
proc import datafile=""
                 out=out_d
                dbms=excel replace;
                getnames=yes;
                sheet='';
run;

/*对导入的数据集 out_d ,按照客户号,或者id进行拆分*/
/*把单独的id号/客户号拿出来*/
proc sort data=out_d out=out_d_01 nodupkey;by id;run;

/*进行循环生成excel*/
data        _null_;
        set out_d_01;
   call execute('%exp('||id||','||"out_names"||','||_n_||')');
run;

使用道具

18515605866 学生认证  发表于 2024-3-7 16:18:50 |显示全部楼层 |坛友微信交流群
提示“物理名无效”

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-3-29 09:09