楼主: dxystata
1124 2

[有偿编程] 30论坛币求助 提取最大值相邻的观测间的均数最大值 [推广有奖]

版主

大师

34%

还不是VIP/贵宾

-

TA的文库  其他...

Software

中英文Ebook

R学习

威望
2
论坛币
182017 个
通用积分
15204.8228
学术水平
208 点
热心指数
271 点
信用等级
174 点
经验
290653 点
帖子
5366
精华
1
在线时间
13470 小时
注册时间
2006-6-21
最后登录
2024-4-19

初级学术勋章 初级热心勋章 中级热心勋章 初级信用勋章

30论坛币
  1. data have;
  2. input time x;
  3. cards;
  4. 1   9
  5. 2   5
  6. 3   6
  7. 4   7
  8. 5   4
  9. 6   9
  10. 7   5
  11. 8   2
  12. 9   3
  13. 10  4
  14. 11  5
  15. 12  6
  16. ;
  17. run;
复制代码
/* 先找到最大值,然后得到最大值和前一个观测的均数以及最大值和后一个观测的均数,最后提取出这两个均数中的最大值*/


关键词:30论坛币 0论坛币 最大值 论坛币 cards
沙发
l1i2n3i4n5g 在职认证  发表于 2017-5-17 12:57:36 |只看作者 |坛友微信交流群
  1. data have;
  2. input time x;
  3. cards;
  4. 1   9
  5. 2   5
  6. 3   6
  7. 4   7
  8. 5   4
  9. 6   9
  10. 7   5
  11. 8   2
  12. 9   3
  13. 10  4
  14. 11  5
  15. 12  6
  16. ;
  17. run;

  18. proc sql;
  19. select max(x) into :max_x from have(firstobs=3);
  20. quit;

  21. %macro findmax;
  22. data want;
  23. set have;
  24. x_lag1=lag1(x);
  25. x_lag2=lag2(x);
  26. qian=mean(x,x_lag1);
  27. hou=mean(x_lag1,x_lag2);
  28. max=max(qian,hou);
  29. if _n_>2 and x_lag1=&max_x;
  30. keep max;
  31. run;
  32. %mend findmax;
  33. %findmax;
复制代码

使用道具

藤椅
yingj7093 在职认证  发表于 2017-5-17 15:02:38 |只看作者 |坛友微信交流群
data have1;
        set have;
        retain maxv;
        xlag=lag(x);
        maxv=max(x,maxv);
        if x=max(x,maxv) or xlag=max(x,maxv) then do;
                mean=mean(x,xlag);
                meanlag=lag(mean(x,xlag));
                finalmax=max(mean(x,xlag),lag(mean(x,xlag)));
        end;
run;
最终结果已经做出来了,中间步骤可以再精简一些,你自己精简吧。

使用道具

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

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

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

GMT+8, 2024-4-19 18:20