请选择 进入手机版 | 继续访问电脑版
楼主: vitaminc0206
3629 7

循环输出数据集 [推广有奖]

  • 0关注
  • 0粉丝

学前班

90%

还不是VIP/贵宾

-

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

vitaminc0206 发表于 2015-1-28 21:13:27 |显示全部楼层 |坛友微信交流群

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
数据处理过程中碰到这样一个问题:
变量1    变量2
1            1989
1            1990
1            1991
2            1990
2            2004
2            2006
……         ……
最终要分别把变量2是1989、1990、1991的人   和   变量2是1990、2004、2006的人作为两个数据集输出,求大虾指教,谢谢?
二维码

扫码加我 拉你入群

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

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

关键词:数据集 数据集输出 数据处理

本帖被以下文库推荐

sushe1527 发表于 2015-1-28 21:49:24 |显示全部楼层 |坛友微信交流群
data c9501m c9501f;
  set a;
  select(id);
  when('1')output c9501m;
  when('2')output c9501f;
  end;
  run;

使用道具

vitaminc0206 发表于 2015-1-28 22:29:24 |显示全部楼层 |坛友微信交流群
sushe1527 发表于 2015-1-28 21:49
data c9501m c9501f;
  set a;
  select(id);
谢谢,不过我可能没完全把我的问题描述清楚。变量1是编号,同为1的是一个人,变量2代表该人的不同三年(后面还有其他变量),可能有几种组合(比如上面提到的两种89、90、91以及90、04、06,还可能有其他组合,但都是3年的)。现在想把每一种组合都单独输出成一个数据集,比如新输出的数据集1里个体都是有89、90、91三年的数据,而新数据集2里个体都是90、04、06三年的数据,等等。
万分感谢:)

使用道具

sushe1527 发表于 2015-1-28 22:53:08 |显示全部楼层 |坛友微信交流群
  1. data test;
  2. input a $ b $ c$ @;
  3. call symput("A"||left(_n_),a);
  4. call symput("B"||left(_n_),b);
  5. call symput("C"||left(_n_),c);
  6. cards;
  7. A1  B1 C1
  8. A2  B2 C2
  9. A3  B3 C3
  10. A4  B4 C4
  11. ;
  12. run;
  13. %macro test;
  14. data test;
  15. %do i=1 %to 4;
  16. a="&&A&i.";
  17.        %do j=1 %to 4;
  18.           b="&&B&j.";
  19.             %do k=1 %to 4;
  20.             c="&&C&k.";
  21.             output;
  22.             %end;
  23.           output;
  24.        %end;
  25. output;
  26. %end;
  27. run;
  28. %mend test;
  29. %test;
复制代码


使用道具

木子星 发表于 2015-1-29 09:31:47 |显示全部楼层 |坛友微信交流群
楼主我看了一下,因为你的数据给的不全,我只能按照我的理解写了下面的代码,供你参考!
[url=]data test;         input var1 var2;         cards; 1 1989 1 1990 1 1991 2 1990 2 2004 2 2006 ; run; data r1 r2;         set test (where=(var2 in (1989,1990,1991)));         output r1;         set test (where=(var2 in (1990,2004,2006)));         output r2; run; proc print data=r1; run; proc print data=r2; run;[/url]

使用道具

木子星 发表于 2015-1-29 09:33:41 |显示全部楼层 |坛友微信交流群
上面的文字太乱了,不好意思,下面的为准!
  1. data test;
  2.         input var1 var2;
  3.         cards;
  4. 1 1989
  5. 1 1990
  6. 1 1991
  7. 2 1990
  8. 2 2004
  9. 2 2006
  10. ;
  11. run;
  12. data r1 r2;
  13.         set test (where=(var2 in (1989,1990,1991)));
  14.         output r1;
  15.         set test (where=(var2 in (1990,2004,2006)));
  16.         output r2;
  17. run;
  18. proc print data=r1;
  19. run;
  20. proc print data=r2;
  21. run;
复制代码

使用道具

suzhzh 发表于 2015-1-29 09:36:03 |显示全部楼层 |坛友微信交流群
Great work.

使用道具

pobel 在职认证  发表于 2015-1-29 10:16:04 |显示全部楼层 |坛友微信交流群
  1. data test;
  2.         input var1 var2;
  3.         cards;
  4. 1 1989
  5. 1 1990
  6. 1 1991
  7. 2 1990
  8. 2 2004
  9. 2 2006
  10. 3 1989
  11. 3 1990
  12. 3 1991
  13. 4 1990
  14. 4 2004
  15. 4 2008
  16. ;

  17. *** Get distinct groups;
  18. data group;
  19.     set test;
  20.     by var1 var2;
  21.         length group $100;
  22.         retain group ;
  23.     if first.var1 then group=cats(var2);
  24.         else group=catx(",",group,var2);
  25.         if last.var1;
  26.         keep group;
  27. run;

  28. proc sort data=group nodupkey;
  29.    by group;
  30. run;

  31. *** create datasets for each group;
  32. data _null_;
  33.     set group nobs=nobs end=last;
  34.         length datasets $100;
  35.         if _n_=1 then do;
  36.              do i=1 to nobs;
  37.                     datasets=catx(" ",datasets, "test"||strip(i));
  38.                  end;
  39.          call execute("data "||strip(datasets)||"; set test;");
  40.         end;
  41.         call execute("if var2 in ("||strip(group)||") then output test"||strip(_n_)||";");
  42.     if last then call execute("run;");
  43. run;
复制代码

使用道具

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

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

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

GMT+8, 2024-4-17 04:21