1819 3

[问答] SAS中如何rolling计数 [推广有奖]

  • 0关注
  • 0粉丝

已卖:102份资源

大专生

16%

还不是VIP/贵宾

-

威望
0
论坛币
1586 个
通用积分
1.0000
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
822 点
帖子
6
精华
0
在线时间
83 小时
注册时间
2014-5-23
最后登录
2021-4-3

楼主
小小学弱爱学习 发表于 2017-6-27 05:44:49 |AI写论文
15论坛币
如题,
假如数据如下:
ID        Monthyear     return
101         1000           0.05
101         1001           0.06
101         1002           0.04
101         1003           0.08
101         1004           0.02
102         1001           0.12
102         1002           0.07
102         1003           0.03
103         1001           0.04
103         1003           0.08
103         1004           0.02
......
假若rolling window是2期,想要计算站在每个MonthYear的时间点上,每两期每个ID有多少个return。
比如MonthYear=1003时,站在这个时间点上ID101往前推两期(rolling window=2)就有两个数据值但是ID103往前推两期就只有一个数据值。

急求大神们帮助!

关键词:rolling roll ING Lin ROL 如何

沙发
zwnSAS121 发表于 2017-6-27 05:44:50
  1. data stock;
  2. input ID Monthyear return;
  3. cards;
  4. 101         1000           0.05
  5. 101         1001           0.06
  6. 101         1002           0.04
  7. 101         1003           0.08
  8. 101         1004           0.02
  9. 102         1001           0.12
  10. 102         1002           0.07
  11. 102         1003           0.03
  12. 103         1001           0.04
  13. 103         1003           0.08
  14. 103         1004           0.02
  15. ;
  16. proc sql;
  17. create table temp as
  18. select a.*
  19. from stock as a  /*as可要可不要*/
  20. left join stock as b
  21. on a.id=b.id
  22. and a.monthyear-1<=b.monthyear<=a.monthyear;
  23. quit;

  24. proc sql;
  25. create table temp1 as
  26. select
  27. id,
  28. monthyear,
  29. return,
  30. count(return) as count
  31. from temp
  32. group by id,monthyear,return;
  33. quit;
复制代码

藤椅
learsaas 发表于 2017-6-27 10:36:49
方法一:datasetp by lag
方法二:proc expand

板凳
小小学弱爱学习 发表于 2017-6-28 01:43:38
learsaas 发表于 2017-6-27 10:36
方法一:datasetp by lag
方法二:proc expand
sas新手...请问能说的详细一点吗?谢谢啦

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

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