楼主: shandj
5576 2

[问答] SAS 如何从第二行开始,每一行数据根据前一行数据获得,或每一行复制前一行值 [推广有奖]

  • 0关注
  • 0粉丝

初中生

71%

还不是VIP/贵宾

-

威望
0
论坛币
3 个
通用积分
0
学术水平
1 点
热心指数
1 点
信用等级
0 点
经验
131 点
帖子
9
精华
0
在线时间
24 小时
注册时间
2017-2-10
最后登录
2018-9-16

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
各位好,本人SAS小白,最近在计算VPIN。问题是这样的,现在要从第一行开始累加交易量,当累加的交易量cv都不超过某个特定阈值V时,将这些观测值分到一个tao组中,如果超过该特定阈值,那么最后一天的交易量超出的部分划分到下一个tao组中。依此类推,若组别到达50组,那么下一个tao组将进入一个新的group。举例:
_N_       volume       V  
1             2             5
2             2             5
3             3             5
4             4             5
……

预想的结果是
_N_       volume     V     cv     tao     group
1             2           5      2       1         1
2             2           5      4       1         1
3             3           5      2       2         1   
4             4           5      1       3         1
……
50           5           5      4       50        1
51           2           5      1        1         2

我的思路比较简单。但是操作起来,在用lag取上一个值时常出现缺省问题,想用循环也总是不对。希望能得到大家的帮助,如果不呈现成上面举例结果那样也是可以的,能得到文字结果就行。谢谢大家!      
二维码

扫码加我 拉你入群

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

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

关键词:volume Volum Group 交易量 Vol SAS 求助! sas 求助 知情交易概率 VPIN SAS编程

回帖推荐

沙发
lovexialulu 发表于 2017-8-24 21:59:20 |只看作者 |坛友微信交流群
  1. data a;
  2. input v vv;
  3. cards;
  4. 1 5
  5. 2 5
  6. 1 5
  7. 3 5
  8. 3 5
  9. 2 5
  10. 1 5
  11. 4 5
  12. 4 5
  13. 2 3
  14. 1 5
  15. 2 5
  16. 1 5
  17. 3 5
  18. 3 5
  19. 2 5
  20. 1 5
  21. 4 5
  22. 4 5
  23. 2 3
  24. 1 5
  25. 2 5
  26. 1 5
  27. 3 5
  28. 3 5
  29. 2 5
  30. 1 5
  31. 4 5
  32. 4 5
  33. 2 3
  34. 1 5
  35. 2 5
  36. 1 5
  37. 3 5
  38. 3 5
  39. 2 5
  40. 1 5
  41. 4 5
  42. 4 5
  43. 2 3
  44. 1 5
  45. 2 5
  46. 1 5
  47. 3 5
  48. 3 5
  49. 2 5
  50. 1 5
  51. 4 5
  52. 4 5
  53. 2 3
  54. 1 5
  55. 2 5
  56. 1 5
  57. 3 5
  58. 3 5
  59. 2 5
  60. 1 5
  61. 4 5
  62. 4 5
  63. 2 3
  64. 1 5
  65. 2 5
  66. 1 5
  67. 3 5
  68. 3 5
  69. 2 5
  70. 1 5
  71. 4 5
  72. 4 5
  73. 2 3
  74. 1 5
  75. 2 5
  76. 1 5
  77. 3 5
  78. 3 5
  79. 2 5
  80. 1 5
  81. 4 5
  82. 4 5
  83. 2 3
  84. 1 5
  85. 2 5
  86. 1 5
  87. 3 5
  88. 3 5
  89. 2 5
  90. 1 5
  91. 4 5
  92. 4 5
  93. 2 3
  94. 1 5
  95. 2 5
  96. 1 5
  97. 3 5
  98. 3 5
  99. 2 5
  100. 1 5
  101. 4 5
  102. 4 5
  103. 2 3
  104. 1 5
  105. 2 5
  106. 1 5
  107. 3 5
  108. 3 5
  109. 2 5
  110. 1 5
  111. 4 5
  112. 4 5
  113. 2 3
  114. 1 5
  115. 2 5
  116. 1 5
  117. 3 5
  118. 3 5
  119. 2 5
  120. 1 5
  121. 4 5
  122. 4 5
  123. 2 3
  124. ;run;
  125. data b;
  126. set a;
  127. retain cv 0 tao 1;
  128. if _n_=1 then cv=v;
  129. else cv=cv+v;
  130. if cv gt vv then do; cv=cv-vv; tao+1;end;

  131. group=int((tao-1)/50)+1;

  132. run;
复制代码

使用道具

藤椅
shandj 发表于 2017-8-24 22:26:56 |只看作者 |坛友微信交流群
lovexialulu 发表于 2017-8-24 21:59
谢谢你!

使用道具

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

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

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

GMT+8, 2024-4-23 18:08