全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
7880 7
2010-03-27
悬赏 1000 个论坛币 已解决
数据类型
公司        日期           收盘价
1            19940101      1
1            19940102      5
1            19940103     6
2           19940101      1
2            19940102      5
2           19940103      6

收益率价格计算方法是,(当天收盘价格-昨日收盘价格)/昨日收盘价格

谢谢大家!

最佳答案

jingju11 查看完整内容

PROC SORT DATA = CRACKMAN OUT = A; BY COMPANY DATE; RUN; DATA B; SET A; BY COMPANY; DATE_1 = INPUT(PUT(DATE, 10.), YYMMDD10.); LAGprice = LAG(PRICE); DIF_date_1 = DIF(DATE_1); DIF_price = DIF(PRICE); IF (NOT FIRST.company) THEN IF (DIF_date_1 = 1 AND LAGprice) THEN RATE = DIF_PRICE/LAGprice; DROP LAG: DIF: DATE_1; RUN;
二维码

扫码加我 拉你入群

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

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

全部回复
2010-3-27 15:37:42
PROC SORT DATA = CRACKMAN OUT = A; BY COMPANY DATE; RUN;

DATA B;
   SET A; BY COMPANY;
   DATE_1 = INPUT(PUT(DATE, 10.), YYMMDD10.);
   LAGprice = LAG(PRICE);
   DIF_date_1 = DIF(DATE_1);
   DIF_price = DIF(PRICE);
   IF (NOT FIRST.company) THEN
      IF (DIF_date_1 = 1 AND LAGprice) THEN RATE = DIF_PRICE/LAGprice;

   DROP LAG: DIF: DATE_1;
RUN;
二维码

扫码加我 拉你入群

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

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

2010-3-27 17:34:28
data crackman;
input company date price@;
cards;
1            19940101      1
1            19940102      6
1            19940103     7
2           19940101      1
2            19940102      5
2           19940103      6

;
run;
proc sort data=crackman out=crackman;
by company date;
run;
proc transpose out=crackman1(drop=_name_);
var price;
by company;
id date;
run;
data result;
set crackman1;
array date _19940101-_19940103;
rate1=put(((date(2)/date(1))-1)*100,F8.2)||'%';
rate2= put(((date(3)/date(2))-1)*100,F8.2)||'%';
proc print;
run;
二维码

扫码加我 拉你入群

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

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

2010-3-27 17:35:17
抛砖引玉啊
希望有人能写出宏来
思路都差不多
期待高手写出更好的程序让我学习学习
二维码

扫码加我 拉你入群

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

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

2010-3-27 19:57:22
data a;
input company date price@;
cards;
1            19940101      1
1            19940102      6
1            19940103     7
2           19940101      1
2            19940102      5
2           19940103      6

;
run;

data b;
set a;
by company;
price_lag=lag(price);

if not first.company then rate=(price-price_lag)/price_lag;
else rate=.;
run;
二维码

扫码加我 拉你入群

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

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

2010-3-30 01:49:47
如果有1000家公司怎么算?
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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