楼主: yingxin0824
6695 12

计算xirr 急!在线等! [推广有奖]

  • 1关注
  • 0粉丝

硕士生

21%

还不是VIP/贵宾

-

威望
0
论坛币
29630 个
通用积分
1.3500
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
426 点
帖子
37
精华
0
在线时间
229 小时
注册时间
2012-2-13
最后登录
2024-4-25

楼主
yingxin0824 在职认证  发表于 2015-1-21 13:09:01 |AI写论文
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,试了好多天都没有成功,有谁可以帮我解决吗?在线等,急!真的谢谢大家了!!


最佳答案

冷秋 查看完整内容

你好问题解决没?我的论坛币。。谢谢!
关键词:IRR 在线等 value date 数据格式 天都 在线

沙发
冷秋 学生认证  发表于 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;
已有 1 人评分论坛币 收起 理由
admin_kefu + 100 热心帮助其他会员

总评分: 论坛币 + 100   查看全部评分

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

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

报纸
yingxin0824 在职认证  发表于 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语句连接到一起就行了!

7
yingxin0824 在职认证  发表于 2015-1-21 18:51:21
冷秋 发表于 2015-1-21 17:49
只要每个ID的数量相同就可以做;不同的话可以对数量相同的ID进行分组,再把最终的结果用set语句连接到一起就 ...
下面这个公式难道要把 v1,v2,……这些全部都列出来吗?

rate = finance('xirr', v1, v2, v3, d1, d2, d3, 0.1);

8
冷秋 学生认证  发表于 2015-1-21 19:19:44
这个函数不怎么熟悉,看看能不能用of,而不一个个列出来.你也可以把原始数据发给我,明天上班帮你看看

9
yingxin0824 在职认证  发表于 2015-1-21 19:36:52
冷秋 发表于 2015-1-21 19:19
这个函数不怎么熟悉,看看能不能用of,而不一个个列出来.你也可以把原始数据发给我,明天上班帮你看看
你好,请问怎样发给您呢?数据比较大

10
sushe1527 发表于 2015-1-21 19:59:11
yingxin0824 发表于 2015-1-21 19:36
你好,请问怎样发给您呢?数据比较大
if _n_<500  你可以给他发一部分的 没必要全发

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

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