楼主: lemonxinran
5896 6

lag函数请教 [推广有奖]

  • 0关注
  • 1粉丝

已卖:2份资源

讲师

30%

还不是VIP/贵宾

-

威望
0
论坛币
1155 个
通用积分
6.0000
学术水平
1 点
热心指数
1 点
信用等级
1 点
经验
10334 点
帖子
188
精华
0
在线时间
605 小时
注册时间
2010-10-25
最后登录
2025-4-2

楼主
lemonxinran 发表于 2013-1-25 15:46:21 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

请教:我的数据包括:gvkey datadate yrmth return

gvkey是股票代码,datadate是交易日期,yrmth是交易日期所在的年度和月份,return是股票日收益。

现在我需要对return取lag,要求每支股票每月的第一个交易日lag_return为空。

我这样写的:

proc sort data=r1995;by gvkey yrmth datadate;run;

data r1995;     

set r1995;     

by gvkey yrmth;     

lag_return=lag(daily_return);     

if first.gvkey and first.yrmth then do;         

lag_return=.  ;     

end;run;

为什么取出来不对呢?第二个月的第一天依然取的是上月最后一天的return。请问我哪里写错了!谢谢!


二维码

扫码加我 拉你入群

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

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

关键词:lag RETURN First Daily turn all

沙发
pobel 在职认证  发表于 2013-1-25 16:12:27
if  first.yrmth then do;         

lag_return=.  ;     

end;
和谐拯救危机

藤椅
lemonxinran 发表于 2013-1-25 16:49:00
pobel 发表于 2013-1-25 16:12
if  first.yrmth then do;         

lag_return=.  ;
谢谢!这次对了!我再理解一下。非常感谢!

板凳
chenys625 发表于 2013-1-26 01:35:40
以后这种用 retain 这个命令。 别用lag,有if的话不小心写的不对,就lag的跟你想到不一样了。

报纸
lemonxinran 发表于 2013-1-26 13:33:59
chenys625 发表于 2013-1-26 01:35
以后这种用 retain 这个命令。 别用lag,有if的话不小心写的不对,就lag的跟你想到不一样了。
谢谢!抽空学习一下retain。

地板
playmore 发表于 2013-1-26 16:50:19
你这里的问题应该是
by a b;
这样by了两个变量后,在用last和first时
只要写最后一个变量就行了,如
last.b
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

7
chenys625 发表于 2013-1-26 20:06:30
playmore 发表于 2013-1-26 16:50
你这里的问题应该是
by a b;
这样by了两个变量后,在用last和first时
这个不一定吧 还是的看具体情况来 不是一定的

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

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