楼主: 虞子期
942 3

救急啊,谢谢各位 [推广有奖]

  • 16关注
  • 0粉丝

本科生

86%

还不是VIP/贵宾

-

威望
0
论坛币
25 个
通用积分
0
学术水平
2 点
热心指数
2 点
信用等级
3 点
经验
1770 点
帖子
58
精华
0
在线时间
102 小时
注册时间
2012-8-31
最后登录
2015-1-19

楼主
虞子期 发表于 2012-11-22 19:35:58 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
数据结构如下
data test;
input x y z@@;
cards;
5.88  173.4723  5094
5.88  173.2468  51751
5.881  173.1299  1203539
5.883  173.2951  13767
5.883  173.4073  6816
5.884  173.7063  3000
5.887  173.9003  4000
5.882  123.100   10000
5.933  173.1298   20000
run;
说明:要求先按变量X和Y排序,把任意两行变量X的差值落在0到0.003之间,同时Y差值落在范围0到0.3425之间的行输出,在满足这些条件的行中用一个新行输出,新行中Z取所有满足条件行中Z的最大值,X为最大Z值对应的值,Y为满足条件行的所有Y值的平均值。
例如
5.88 173.2468   51751
5.881 173.1299  1203539
这两行X的差值为0.001,Y的差值为0.1169,同时满足两个条件,这两行中Z的最大值是1203539.故X取值为5,881,输出新行为
X           Y                            Z
5.881    173.18835  1203539
输出数据集结果应为:
5.881   173.13      1203539
5.887   173.8033  4000
5.882   123.100   10000
5.933   173.1298  20000
这个问题纠结很久了,请各位大侠指教!

二维码

扫码加我 拉你入群

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

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

关键词:Input cards Data test card 平均值 最大值

沙发
宋小波 发表于 2012-11-22 19:39:12 来自手机
无解啊

藤椅
Imasasor 发表于 2012-11-22 22:03:46
  1. %let n=9; /*定义你原数据有多少观测*/
  2. %let num=%eval(&n*(&n-1)/2); /*排列组合*/
  3. %put #

  4. /*生成排列组合数据集*/
  5. data sequence;
  6. informat c $8.;
  7. do i=1 to &n-1;
  8. do j=1 to &n-i;
  9. a=i;b=i+j;
  10. c=catx(",",a,b);
  11. output;
  12. end;
  13. end;
  14. drop i j;
  15. run;


  16. proc sql;
  17. select c into:c1-:c%left(&num) from sequence;
  18. quit; /*将排列组合的观测序号赋给多个宏变量 */

  19. data test;
  20. input x y z@@;
  21. cards;
  22. 5.88  173.4723  5094
  23. 5.88  173.2468  51751
  24. 5.881  173.1299  1203539
  25. 5.883  173.2951  13767
  26. 5.883  173.4073  6816
  27. 5.884  173.7063  3000
  28. 5.887  173.9003  4000
  29. 5.882  123.100   10000
  30. 5.933  173.1298   20000
  31. ;
  32. run;

  33. proc sort data=test;
  34. by z;
  35. run;

  36. %macro xunhuan;
  37. proc delete data=null; run;
  38. %do j=1 %to #
  39. data tem;
  40. do n=&&c&j;
  41. set test point=n;
  42. output;
  43. end;
  44. stop;
  45. run;
  46. data tem1;
  47. set tem;
  48. x1=x-lag(x);
  49. y1=y-lag(y);
  50. x1=round(x1,0.001);
  51. y1=round(y1,0.0001);
  52. drop x1 y1;
  53. y=(lag(Y)+y)/2;
  54. if x1^=. and abs(x1)<0.003 and y1^=. and abs(y1)<0.3425 then output;
  55. run;
  56. proc append base=null data=tem1 force;
  57. run;
  58. %end;
  59. %mend;
  60. %xunhuan;
复制代码
欢迎加入亚太地区第一R&Python数据挖掘群: 251548215;

板凳
虞子期 发表于 2012-11-22 22:48:55
希望大家多多指教,谢谢

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-5 22:28