楼主: tj0412ymy
1682 3

[原创博文] DATA步中数据改动处理,忘高手指教! [推广有奖]

  • 2关注
  • 48粉丝

已卖:4314份资源

副教授

65%

还不是VIP/贵宾

-

威望
0
论坛币
11512 个
通用积分
12.7575
学术水平
72 点
热心指数
91 点
信用等级
64 点
经验
29292 点
帖子
545
精华
0
在线时间
1203 小时
注册时间
2009-3-10
最后登录
2024-2-15

楼主
tj0412ymy 发表于 2010-8-11 18:22:13 |AI写论文
10论坛币
具体问题见附件!多谢!

最佳答案

soporaeternus 查看完整内容

希望对你有帮助
关键词:data步 Data

沙发
soporaeternus 发表于 2010-8-11 18:22:14
  1. data t1;
  2.         retain y1m y2m;
  3.         set test;
  4.         if y1>=0 then y1m=y1;
  5.         if y2>=0 then y2m=y2;

  6. run;


  7. proc sort data=t1 out=t2;
  8.         by descending x;
  9. run;quit;

  10. data result;
  11.         retain x y1n y2n;
  12.         set t2;
  13.         if y1>=0 then y1n=y1;
  14.         else y1=min(y1m,y1n);
  15.         if y2>=0 then y2n=y2;
  16.         else y2=min(y2m,y2n);
  17.         keep x y1 y2;


  18. run;
  19. proc sort data=result;by x;run;quit;
复制代码
希望对你有帮助
Let them be hard, but never unjust

藤椅
wzw03 发表于 2010-8-11 18:25:36
呵呵
就5个B,还要自己下载,不看了

板凳
hopewell 发表于 2010-8-11 23:23:39
  1. data raw;
  2.         input x y1 y2;
  3. datalines;
  4. 20        0.006104727        0.004067122
  5. 21        0.004227993        0.001962399
  6. 22        0.002711883        0.000253622
  7. 23        0.001514438        -0.001098151
  8. 24        0.000595809        -0.002130511
  9. 25        -8.11806E-05        -0.002879166
  10. 26        -0.000550671        -0.003377611
  11. 27        -0.000843554        -0.003656955
  12. 28        -0.000987463        -0.003745806
  13. 29        -0.001006888        -0.003670277
  14. 30        -0.000923374        -0.003454096
  15. 31        -0.000755763        -0.003118793
  16. 32        -0.000520325        -0.002683844
  17. 33        -0.000230918        -0.002166862
  18. 34        0.000100838        -0.001583807
  19. 35        0.000465386        -0.000949061
  20. 36        0.000855043        -0.000275514
  21. 37        0.001263779        0.000425384
  22. 38        0.001686938        0.001143744
  23. 39        0.002120935        0.001871407
  24. 40        0.002562978        0.002602034
  25. ;
  26. data _null_;
  27.         retain new_y1 new_y2;
  28.         set raw end=last;
  29.         lag_y1=lag(y1);
  30.         lag_y2=lag(y2);
  31.         if _n_>1 then do;
  32.                 if lag_y1*y1<0 then new_y1=min(new_y1,max(y1,lag_y1));
  33.                 if lag_y2*y2<0 then new_y2=min(new_y2,max(y2,lag_y2));
  34.         end;
  35.         if last then do;
  36.                 call symputx('y1',new_y1);
  37.                 call symputx('y2',new_y2);
  38.         end;
  39. run;
  40. %put NOTE: *** y1=&y1 y2=&y2 ***;
  41. data out;
  42.         set raw;
  43.         if y1<0 then y1=&y1;
  44.         if y2<0 then y2=&y2;
  45. run;
复制代码
已有 1 人评分学术水平 热心指数 收起 理由
crackman + 1 + 1 值得学习

总评分: 学术水平 + 1  热心指数 + 1   查看全部评分

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

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