Hi all,
proc sql;
create table umd
as select distinct a.permno, a.date, a.prc, exp(sum(log(1+b.ret)))-1 as cum_return
from crspmom6(keep=permno date) as a, crspmom6 as b
where a.permno=b.permno and 0<=intck('month', b.date, a.date)<&J
group by a.permno, a.date
having count(b.ret)=&J;
quit;
How to change red words to skip one month, that is, skip the month between time t and t-1?
The two uses of &J do not seem to be related. The first refers to a number of months, the second, to a number of records...
WHERE condition only: Remove the "=" sign from the condition to exclude the current month and add a "=" sign before &J to include the Jth month..
HAVING condition has no apparent relation with your question...
PG
Not 100% sure what you want, because the question isn't clear and how you're incrementing &J isn't presented.
0<=intck('month', b.date, a.date)<&J+1?
The two uses of &J do not seem to be related. The first refers to a number of months, the second, to a number of records...
WHERE condition only: Remove the "=" sign from the condition to exclude the current month and add a "=" sign before &J to include the Jth month..
HAVING condition has no apparent relation with your question...
PG
Thanks! It works.
In my case, '=' should not be added before &J, so in the HAVING condition, count should be &J-1
Build your skills. Make connections. Enjoy creative freedom. Maybe change the world. Registration is now open through August 30th. Visit the SAS Hackathon homepage.
Register today!Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.