楼主: 常洪洋
4995 14

请教一下,通过retain变量累加,如何设置累加次数 [推广有奖]

11
常洪洋 发表于 2017-3-10 02:06:14
lovexialulu 发表于 2017-3-9 15:54
这种应该是你要的吧,组内累积衰减50%
还不是,可能我之前没说清楚,有点不好描述,又上传了图片

12
常洪洋 发表于 2017-3-10 02:08:31
还有,想问一下,logistic回归模型是不是主要用于横截面数据,可不可以用在时间序列数据上

13
lovexialulu 发表于 2017-3-10 10:45:03
  1. data zip;
  2. input zip$ q_1 q_2 q_3;
  3. cards;
  4. 50003 0 0 0
  5. 50003 0 1 0
  6. 50003 1 1 0
  7. 50003 1 1 0
  8. 50003 0 1 0
  9. 50003 0 0 0
  10. 50003 1 0 0
  11. 50003 0 1 0
  12. 50003 0 1 0
  13. 50003 1 0 0
  14. 50003 0 0 0
  15. 50003 2 1 0
  16. 50003 0 0 0
  17. 50003 1 0 0
  18. 50010 0 0.8 4
  19. 50010 1 1.8 0
  20. 50010 0 2.8 0
  21. 50010 1 2 4
  22. 50010 0 3 4
  23. 50010 4 3 6
  24. 50010 0 2.8 0
  25. 50010 1 2 4
  26. 50010 0 3 4
  27. 50010 3 3 6
  28. 50010 0 2.8 0
  29. 50010 1 2 4
  30. 50010 0 3 4
  31. 50010 2 3 6
  32. 50010 0 2.8 0
  33. 50011 0 3 6
  34. 50011 2 2.8 0
  35. 50011 0 2 4
  36. 50011 0 3 4
  37. 50011 1 3 6
  38. 50010 1 2.8 0
  39. ;
  40. proc sort data=zip out=b_;by zip;run;
  41. data b;
  42. set b_;
  43. order=_n_;
  44. run;

  45. %macro jj(indata,outdata,case,od,out,ct);
  46. data &outdata.;
  47. set &indata.(where=(&case.));
  48. by zip;

  49. retain num&od. ;
  50. if q_1 ne 0  then  num&od.+1;
  51. if first.zip then do;
  52.    if q_1 ne 0 then num&od.=1;else
  53.    num&od.=0;
  54. end;
  55. run;

  56. data del_&out.;
  57. set &outdata. ;
  58. if num&od.=0;
  59. run;

  60. data cumpter_c&out.;
  61. set &outdata.(where=(num&od. ne 0));
  62. by zip;
  63. retain num&ct.;

  64. if first.zip then  num&ct.=1;else num&ct.+1;

  65. if num&ct. le 8 then do;
  66. rate=1/(2**num&ct.);
  67. if num&ct.=1 then want=q_1;else want=sum(q_1,rate);
  68. end;

  69. run;
  70. %mend jj;
  71. %jj(b,c,%str(1=1),0,1,1);
  72. %jj(cumpter_c1,d,%str(num1 gt 8),2,2,3);
  73. %jj(cumpter_c2,e,%str(num3 gt 8),4,3,5);

  74. data final;
  75. set del_1  cumpter_c1(where=(num1 le 8))
  76.     del_2  cumpter_c2(where=(num3 le 8))
  77.     del_3  cumpter_c3(where=(num5 le 8));
  78.         if want=. then want=0;
  79.         keep want q_1 zip order;
  80. proc sort;by order;
  81. run;
复制代码

want1.PNG (47.45 KB)

want1.PNG

14
巴黎流浪街 发表于 2020-7-14 10:23:51
data a;
x=100;
run;
data b;
set a;
sum=0;
retain sum;
do i=1 to 8;
sum+x;
x=x/2;
output;
end;
run;

15
巴黎流浪街 发表于 2020-7-14 10:25:20
data a;
x=100;
run;
data b;
set a;
sum=0;
retain sum;
do i=1 to 9;
sum+x;
x=x/2;
output;
end;
run;

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-3-7 15:06