全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
6621 12
2015-01-21
悬赏 20 个论坛币 已解决
数据格式是:

id         date             value
1         2013/1/1        -200
1         2013/2/14        50
1        2013/4/15        120
2        2013/2/2         -50
2        2013/3/4         20
2        2013/4/1          25
……

我想要计算每个id的xirr,试了好多天都没有成功,有谁可以帮我解决吗?在线等,急!真的谢谢大家了!!


最佳答案

冷秋 查看完整内容

你好问题解决没?我的论坛币。。谢谢!
二维码

扫码加我 拉你入群

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

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

全部回复
2015-1-21 13:09:02
yingxin0824 发表于 2015-1-22 09:51
已经发送到您的邮箱,thank you sooooooooooooooooooooooooooooooooooooooooo much!!!!
你好问题解决没?我的论坛币。。谢谢!
二维码

扫码加我 拉你入群

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

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

2015-1-21 16:43:50
如果每个id的VALUE均为三个,楼主可以试试以下方法:

proc datasets lib=work memtype=data nolist kill;
quit;

data finace;
input id date yymmdd10. value;
cards;
1 2013/01/01    -200
1 2013/02/14    50
1 2013/04/15    120
2 2013/02/02    -50
2 2013/03/04    20
2 2013/04/01    25
run;

proc sort data=finance;
        by id;
run;

data finace1;
        set finace;
        by id;
        if first.id then ord=0;
        ord+1;
run;

proc sort data=finace1;
        by id ord;
run;

%macro finace(dout=, var=, name= );

proc transpose data=finace1 out=&dout.(drop=_name_) prefix=&name.;
        id ord;
        by id;
        var &var.;
run;

proc sort data=&dout.;
        by id;
run;

%mend;

%finace(dout=finace2, var=value, name=v);
%finace(dout=finace3, var=date, name=d);

data fin;
        merge finace2 finace3;
        by id;
run;

data rate(keep=id rate);
        set fin;
        rate = finance('xirr', v1, v2, v3, d1, d2, d3, 0.1);
run;
二维码

扫码加我 拉你入群

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

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

2015-1-21 17:12:15
冷秋 发表于 2015-1-21 16:43
如果每个id的VALUE均为三个,楼主可以试试以下方法:

proc datasets lib=work memtype=data nolist kill ...
您好,关键是每个id对应的数量都不是一样的,这应该怎么解决呢?真的急需要您的帮助,谢谢您!
二维码

扫码加我 拉你入群

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

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

2015-1-21 17:12:17
冷秋 发表于 2015-1-21 16:43
如果每个id的VALUE均为三个,楼主可以试试以下方法:

proc datasets lib=work memtype=data nolist kill ...
而且有些数量非常多,上千个。
二维码

扫码加我 拉你入群

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

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

2015-1-21 17:49:23
只要每个ID的数量相同就可以做;不同的话可以对数量相同的ID进行分组,再把最终的结果用set语句连接到一起就行了!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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