全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
6678 10
2011-12-09
问题是:由于SAS中lag函数是取同一个变量的前一个观测值。那么对于面板数据,公司交界处,使用lag函数之后公司2的第一个值会取成公司1的最后一个值。。。在SAS中怎么样处理这个问题呢?我尝试了,在lag语句后加入了by变量,但是没有起作用。。。
大家帮忙啦~~
二维码

扫码加我 拉你入群

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

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

全部回复
2011-12-9 13:32:56
举个例子:有90个公司,1000个月的数据,对每个公司的变量return求取月滞后值。。。怎么样将公司分开呢?是不是在SAS中有个定义时间变量的东东呢
二维码

扫码加我 拉你入群

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

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

2011-12-9 16:22:50
data return;
set return;
by stock date;
lag_dividend=lag(dividend);
lag_price=lag(price);
if first.stock then do;
lag_price=.;
lag_dividend=.;
end;
dailyr=(price-lag_price+lag_dividend)/lag_price;
run;

我之前写的 ,也刚好用到了这个 ,希望对你有帮助
二维码

扫码加我 拉你入群

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

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

2011-12-11 09:36:24
支持者顶啊
二维码

扫码加我 拉你入群

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

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

2011-12-11 15:10:02
trslvpeng 发表于 2011-12-9 16:22
data return;
set return;
by stock date;
谢谢!应该对的~
二维码

扫码加我 拉你入群

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

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

2011-12-11 15:26:28
trslvpeng 发表于 2011-12-9 16:22
data return;
set return;
by stock date;
但是,我以前用这个方法,加入stock是股票代码。。。
这样写data return;
set return;
if stock = lstock;
then lag_price=lag(price);
else lag_price=.;
run;
lstock 是股票代码的前个观察值
这个程序计算出来的非常混乱,就是不对。但是自己觉得理论上市正确的呀,希望能指教一二,不胜感激。。。
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群