楼主: calsunny
3531 5

请教SAS Do Loop或者其他方法的程序! [推广有奖]

  • 2关注
  • 5粉丝

讲师

84%

还不是VIP/贵宾

-

威望
0
论坛币
3460 个
通用积分
7.0000
学术水平
2 点
热心指数
5 点
信用等级
1 点
经验
1656 点
帖子
469
精华
0
在线时间
732 小时
注册时间
2007-4-3
最后登录
2019-12-3

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
请问如果我有数据是这样的:

  1.                                                                               var1      N
  2.                                                                       1    -2.0041     1
  3.                                                                       2    -1.9812     2
  4.                                                                       3    -1.9585     3
  5.                                                                       4    -1.9360     4
  6.                                                                       5    -1.9139     5
  7.                                                                       6    -1.8919     6
  8.                                                                       7    -1.8702     7
  9.                                                                       8    -1.8488     8
  10.                                                                       9    -1.8276     9
  11.                                                                      10    -1.8066    10
  12.                                                                      11    -1.7858    11
  13.                                                                      12    -1.7653    12
  14.                                                                      13    -1.7449    13
  15.                                                                      14    -1.7247    14
  16.                                                                      15    -1.7047    15
  17.                                                                      16    -1.6850    16
  18.                                                                      17    -1.6653    17
  19.                                                                      18    -1.6459    18
  20.                                                                      19    -1.6267    19
  21.                                                                      20    -1.6076    20
  22.                                                                      21    -1.5886    21
  23.                                                                      22    -1.5698    22
  24.                                                                      23    -1.5512    23
  25.                                                                      24    -1.5328    24
  26.                                                                      25    -1.5144    25
  27.                                                                      26    -1.4962    26
  28.                                                                      27    -1.4782    27
  29.                                                                      28    -1.4603    28
  30.                                                                      29    -1.4425    29
  31.                                                                      30    -1.4249    30
  32.                                                                      31    -1.4073    31
  33.                                                                      32    -1.3899    32
  34.                                                                      33    -1.3727    33
  35.                                                                      34    -1.3555    34
  36.                                                                      35    -1.3384    35
  37.                                                                      36    -1.3215    36
  38.                                                                      37    -1.3047    37
  39.                                                                      38    -1.2879    38
  40.                                                                      39    -1.2713    39
复制代码

在table里有Var1和 N (就是OBS number)两个变量。

我想得到一个新的table,在新的Table是这样得到的,
比较 Var1 小于-1.90,记录var1对应的obs number(5),然后再找Var1中小于 -1.80,对应的obs number是10,然后小于-1.70 对应的obs number,依次类推。请问我如何用SAS程序记录下这些 obs number 得到一个新的表格,这个新表格里只要 -1.90, -1.80, -1.70, -1.60。。。。 和对应的obs number,想破头了,不知道这个应该怎么做比较好。

敬请走过路过的知道怎么做的,帮个忙,先谢谢了!
二维码

扫码加我 拉你入群

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

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

关键词:loop Number Table sas程序 ABLE 程序

沙发
calsunny 发表于 2016-6-2 11:34:52 |只看作者 |坛友微信交流群
再次请大家帮忙~~~~~~~~~~~~~~~~

使用道具

  1. data a;
  2. input var1 N;
  3. cards;
  4. -2.0041 1
  5. -1.9812 2
  6. -1.9585 3
  7. -1.9360 4
  8. -1.9139 5
  9. -1.8919 6
  10. -1.8702 7
  11. -1.8488 8
  12. -1.8276 9
  13. -1.8066 10
  14. -1.7858 11
  15. -1.7653 12
  16. ;
  17. run;

  18. data b;
  19.         set a;
  20.         if var1<-1.9 then do;var=-1.9;sort=1;end;
  21.                 else if var1<-1.8 then do;var=-1.8;sort=2;end;
  22.                 else if var1<-1.7 then do;var=-1.7;sort=3;end;
  23. run;

  24. proc sort data=b;by sort descending N;run;
  25. proc sort data=b nodupkey;by sort;run;
复制代码

使用道具

板凳
calsunny 发表于 2016-6-2 20:18:37 |只看作者 |坛友微信交流群
谢谢 孤单的我们 帮我回答问题,我的实际数据有近500行,然后从-1.90 到+4.0 不要0.1,有大概60行,不想写60行的if else,应该有更方便的方法。
  1. %macro test(Have=,Want=);
  2.    proc sql noprint;
  3.    %do i=-1.90 %to 4.0 by 0.1;
  4.                   Create table &want as
  5.                 select max(N) into: new_var
  6.                 from &Have
  7.                 where var1 > &I;
  8.          %end;
  9.     quit;     
  10. %mend;
复制代码
以上Code 是我的思路,但是还不Work,我要写一个Macro是因为这个同样的事情,我需要做很多遍,继续求帮忙,谢谢了!

使用道具

calsunny 发表于 2016-6-2 20:18
谢谢 孤单的我们 帮我回答问题,我的实际数据有近500行,然后从-1.90 到+4.0 不要0.1,有大概60行,不想写6 ...
浮点型do loop不work,宏变量可以换成-19到+40,再除以10

使用道具

地板
yongyitian 发表于 2016-6-3 09:35:19 |只看作者 |坛友微信交流群
  1. /* try this */
  2. data have;
  3. input Obs    var1      N;
  4. datalines;
  5. 1    -2.0041     1
  6. 2    -1.9812     2
  7. 3    -1.9585     3
  8. 4    -1.9360     4
  9. 5    -1.9139     5
  10. 6    -1.8919     6
  11. 7    -1.8702     7
  12. 8    -1.8488     8
  13. 9    -1.8276     9
  14. 10    -1.8066    10
  15. 11    -1.7858    11
  16. 12    -1.7653    12
  17. 13    -1.7449    13
  18. 14    -1.7247    14
  19. 15    -1.7047    15
  20. 16    -1.6850    16
  21. 17    -1.6653    17
  22. 18    -1.6459    18
  23. 19    -1.6267    19
  24. 20    -1.6076    20
  25. 21    -1.5886    21
  26. 22    -1.5698    22
  27. 23    -1.5512    23
  28. 24    -1.5328    24
  29. 25    -1.5144    25
  30. 26    -1.4962    26
  31. 27    -1.4782    27
  32. 28    -1.4603    28
  33. 29    -1.4425    29
  34. 30    -1.4249    30
  35. 31    -1.4073    31
  36. 32    -1.3899    32
  37. 33    -1.3727    33
  38. 34    -1.3555    34
  39. 35    -1.3384    35
  40. 36    -1.3215    36
  41. 37    -1.3047    37
  42. 38    -1.2879    38
  43. 39    -1.2713    39
  44. ; run;

  45. data want;
  46.     set have;
  47.     do i = -1  to -1.9 by -0.1;
  48.       if var1 < i then var2=i;
  49.     end;
  50.     drop i;
  51. run;

  52. proc sort data=want;
  53.    by var2 var1;
  54. run;

  55. data wanted;
  56.     set want;
  57.     by var2;
  58.     if last.var2;
  59. run;
复制代码


MP784.JPG

使用道具

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

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

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

GMT+8, 2024-4-19 15:33