楼主: liu022
1676 6

数据集中观测修改与更新的问题 [推广有奖]

  • 0关注
  • 6粉丝

已卖:181份资源

讲师

64%

还不是VIP/贵宾

-

威望
0
论坛币
879 个
通用积分
7.4013
学术水平
23 点
热心指数
18 点
信用等级
21 点
经验
3667 点
帖子
430
精华
1
在线时间
375 小时
注册时间
2007-5-21
最后登录
2025-10-22

楼主
liu022 发表于 2014-7-21 00:53:11 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
大家好!

       我在做一个资产池违约分析:

      Asset Pool的现金流如下:

       Period          Asset1    Asset2   Asset3   N_Simulation
          1                  1             1          2             1
          2                  1             0          3             1
          3                  0             2          1             1

。。。。。

        因为资产很多,也模拟了很多次,所以这个表格很大

        违约时间表如下:
         N_Simulation            Asset1                Asset3
          1                                1                         2
          2                                0                         0
          3                                3                         1

          例如:第一行表示Asset1违约时间为第1期,Asset3违约时间在第3期。其他依次类推。

          我怎么才能把数据Asset Pool的现金流表格改为违约后现金流为0,例如


       Period          Asset1                                            Asset2   Asset3                                          N_Simulation
          1                  0(第1期违约了,改为0)             1          2                                                         1
          2                  0(第1期违约了,改为0)             0          0(第2期违约了,改为0)                  1
          3                  0(第1期违约了,改为0)             2          0(第2期违约了,改为0)                  1







谢谢大家!




二维码

扫码加我 拉你入群

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

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

关键词:数据集 Simulation ulation period Asset 现金流

沙发
920240553 发表于 2014-7-21 11:46:39
例如:第一行表示Asset1违约时间为第1期,Asset3违约时间在第3期。其他依次类推。
你的表述不是很好理解,所以请表述更清晰一点。

藤椅
liu022 发表于 2014-7-21 17:37:44
920240553 发表于 2014-7-21 11:46
例如:第一行表示Asset1违约时间为第1期,Asset3违约时间在第3期。其他依次类推。
你的表述不是很好理解, ...
违约时间表如下:
         N_Simulation            Asset1                Asset3
          1                                1                         2
          2                                0                         0
          3                                3                         1

          例如:第一行表示Asset1违约时间为第1期,Asset3违约时间在第3期。其他依次类推。



对整个资产池进行了很多次模拟,N_Simulation表示第几次模拟。
         N_Simulation            Asset1                Asset3
          1                                1                         2
表示在第1次模拟中,Asset1是在Period1就违约了,后面现金流都收不回来。Asset3是在Period3的时候违约的,Period1和Period2能够收回现金流,后面的没有了。

板凳
liu022 发表于 2014-7-21 18:40:58
920240553 发表于 2014-7-21 11:46
例如:第一行表示Asset1违约时间为第1期,Asset3违约时间在第3期。其他依次类推。
你的表述不是很好理解, ...
我自己隐隐的感觉proc sql可能能够解决问题,应该需要Sql内部的循环。

不知道您能帮我解决吗?谢谢!

报纸
920240553 发表于 2014-7-22 09:33:00
liu022 发表于 2014-7-21 17:37
违约时间表如下:
         N_Simulation            Asset1                Asset3
          1       ...
Asset3不是在Period2的时候违约的吗?怎么是3?

地板
920240553 发表于 2014-7-22 11:04:58
看看这个是不是你想要的:
  1. data  AssetPl;
  2.         input Period Asset1 Asset2 Asset3 N_Simulation;
  3.         datalines;
  4.           1                  1             1          2             1
  5.           2                  1             0          3             1
  6.           3                  0             2          1             1
  7.         ;
  8. run;
  9. data deftime;
  10.         input N_Simulation Asset1t Asset3t;
  11.         datalines;
  12.           1                                1                         2
  13.           2                                0                         0
  14.           3                                3                         1
  15.         ;
  16. run;
  17. proc sql noprint;
  18.         create table _AssetPl as
  19.         select *
  20.         from AssetPl
  21.         left join
  22.         deftime
  23.         on AssetPl.N_Simulation = deftime.N_Simulation
  24.         order by AssetPl.Period;
  25. quit;
  26. data a ;
  27.         set _assetpl;
  28.         if Asset1t = 1 then Asset1 = 0;
  29.         if Asset3t = 2 and Period >=2 then Asset3 = 0;
  30.         drop Asset1t Asset3t;
  31. run;
复制代码


唯SAS之鼎也!

7
liu022 发表于 2014-7-23 00:04:57
920240553 发表于 2014-7-22 11:04
看看这个是不是你想要的:
这和我自己的写法是一样的。但是实际的问题是资产数目很大,而且不是每一期每个资产都有违约。因此需要用Macro对Asset进行循环。我希望的是不用Macro,能一次性做好,而且尽可能不要sort。

Macro和Sort的效率实在太低了。

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-23 00:38