楼主: hello_fj
4792 1

[学习分享] 神奇的proc expand(一) [推广有奖]

  • 5关注
  • 1粉丝

博士生

20%

还不是VIP/贵宾

-

威望
0
论坛币
2 个
通用积分
0.0167
学术水平
39 点
热心指数
51 点
信用等级
26 点
经验
5664 点
帖子
133
精华
0
在线时间
365 小时
注册时间
2014-6-8
最后登录
2022-3-24

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
在使用SAS做投资策略的时候,面对一系列的时间序列数据,我们需要对这些数据求移动平均,移动求和,最近N个的最大值,最小值等等,如果自己用SAS data步编程过程比较繁琐,下面为大家介绍一个神奇但鲜为人知的过程步-proc expand。

基本常用语法:
proc expand data=YourData  Out=YourData method=option;
by  variable;
convert variable1= variable2/ transformout = (option);
run;
基本语法大致如此,
data=你的数据集,Out为输出的数据集,method指定在数据间的差值方法,默认的方法是,一般来说我们设为method=none;
by  variable 表示按变量variable 分组运算。
convert variable1= variable2 表示要将变量1 转换为变量2,至于如何转换 则要看transformout。
transformout = (option);  option指定转换的方法和参数。  
下面举例说明
例1:LAGS 和 LEADS

proc sort data=sashelp.Stocks;
  by Stock;
run;
proc expand data=sashelp.Stocks Out=Stocks method=none;
by Stock;
convert close = lead_close / transformout = (lead 1);
convert close = lag_close / transformout = (lag 1);
run;



例子2 求最近N个观测的最大值

proc expand data=sashelp.Stocks Out=Stocks method=none;
by Stock;
convert close = max_close / transformout = (movmax 5);
convert close = min_close / transformout = (movmin 5);
run;

未完待续
更多精彩 尽在公众号:SAS与量化投资

二维码

扫码加我 拉你入群

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

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

关键词:expand EXP ROC transform Variable convert 投资策略 method option 最大值

公众号:SAS与量化投资
沙发
HXAI102230 在职认证  发表于 2022-8-26 11:07:46 |只看作者 |坛友微信交流群
不错,亲测好用。。。

使用道具

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

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

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

GMT+8, 2024-4-20 11:41