楼主: lyuan
3151 4

求助:把SAS数据集按某个字段分组导出到excel;每一组输出成一个excel表 [推广有奖]

  • 0关注
  • 0粉丝

学前班

80%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
33 点
帖子
2
精华
0
在线时间
3 小时
注册时间
2012-5-14
最后登录
2015-3-23

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
比如如下数据集

data  a;
input  x  y;
cards;
103   j
230   k
230   l
103   j
324   p
324   u
324   r
;
run;

按X分组,然后保存到Excel里面,求大神帮忙!

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:Excel表 sas数据集 EXCEL xcel exce excel

沙发
李会超 发表于 2014-11-28 22:08:08 来自手机 |只看作者 |坛友微信交流群
我有个分段输入到多个txt的程序,可以参考

使用道具

藤椅
Tigflanker 发表于 2014-11-29 23:30:19 |只看作者 |坛友微信交流群
  1. data a;
  2. input x y $;
  3. cards;
  4. 103 j
  5. 103 m
  6. 230 k
  7. 230 l
  8. 324 p
  9. 324 u
  10. 324 r
  11. ;
  12. run;

  13. data empty;
  14.   if 0 then set a;
  15.   stop;
  16. run;

  17. data _null_;
  18.   dcl hash h(dataset:'empty');
  19.   h.definekey(all:'y');
  20.   h.definedone();

  21.   do until(last.x);
  22.     set a;
  23.         by x;

  24.     if h.check() then h.add();
  25.   end;

  26.   h.output(dataset:cats('out',x));
  27. /*  call execute(cats('proc export data = out',x,'...'));*/
  28. run;
复制代码
我基于9.1.3写的,9.2以上你可以用h.ref、h.clear简化code
另外,你的数据貌似有dup,你要保留dup的话,尝试用multidata选项修饰下,或者加_n_随你;
import我没写全,请自己写下。
已有 1 人评分经验 收起 理由
eijuhz + 20 热心帮助其他会员

总评分: 经验 + 20   查看全部评分

Bye SAS.
若有缘,能重聚。

使用道具

板凳
l1i2n3i4n5g 在职认证  发表于 2019-9-5 12:30:03 |只看作者 |坛友微信交流群
  1. data  a;
  2. input  x  y $;
  3. cards;
  4. 103   j
  5. 230   k
  6. 230   l
  7. 103   j
  8. 324   p
  9. 324   u
  10. 324   r
  11. ;
  12. run;

  13. proc sort data=a;
  14.    by x y;
  15. run;

  16. options validvarname=any validmemname=extend;
  17. data _null_;
  18.    set a;
  19.    by x y;
  20.    retain name_excel;
  21.    if first.x then do;
  22.       name_excel=x;
  23.       call execute('libname temp "C:\test\'||strip(name_excel)||'.xlsx";');
  24.    end;
  25.    if last.y then do;
  26.       name_sheet=y;
  27.       call execute('data temp."'||strip(name_sheet)||'"n;set a;where x='||strip(name_excel)||' and y="'||strip(name_sheet)||'";run;');
  28.    end;
  29.    if last.x then call execute('libname temp clear;');
  30. run;
复制代码

使用道具

报纸
hlg11 发表于 2019-9-5 12:40:08 来自手机 |只看作者 |坛友微信交流群
lyuan 发表于 2014-11-17 18:31
比如如下数据集

data  a;
楼主,找到答案了吗?分析一下?

使用道具

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

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

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

GMT+8, 2024-9-19 06:08