全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1407 3
2016-11-22
各路大神,

我目前在做一个risk management的项目,现在需要去求roll rate,data step写出来的程序是这样的,希望能够做一个简化。
data task1;
        set p2.delinquency_buckets;
        RR_0_30=DPD30/lag(Curr_Bal);
        RR_30_60=DPD60/lag(DPD30);
        RR_60_90=DPD90/lag(DPD60);
        RR_90_120=DPD120/lag(DPD90);
        RR_120_150=DPD150/lag(DPD120);
        RR_150_180=DPD180/lag(DPD150);
run;

求一些不同的方法,谢谢!

二维码

扫码加我 拉你入群

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

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

全部回复
2016-11-22 15:13:51
试一下这个,data _null_ 把你的variables写入macro variables, &var1/&vare/。。。data task结构和你的一样。希望对你有帮助。(声明:我没有运行过)
data _null_ ;
    input var $ @@;
    call symputx(cats('var', _n_), var) ;
cards ;
curr_bal DPD30 DPD60 DPD90 DPD120 DPD180
;
run ;

data task ;
   set p2.delinquency_buckets ;
   RR_0_30    = &var1/lag(&var2) ;
   RR_30_60   = &var2/lag(&var3) ;
   RR_60_90   = &var3/lag(&var4) ;
   RR_90_120  = &var4/lag(&var5) ;
   RR_120_180 = &var5/lag(&var6) ;
run ;
二维码

扫码加我 拉你入群

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

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

2016-11-22 17:06:38
%macro jj(p,q);
   RR_&p._&q.=DPD&q./lag(DPD&p.);
%mend jj;

data task1;
        set p2.delinquency_buckets;

        RR_0_30=DPD30/lag(Curr_Bal);
  %jj(60,90);
  %jj(90,120);
  %jj(120,150);
  %jj(150,180);
run;
二维码

扫码加我 拉你入群

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

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

2016-11-23 10:38:51
lovexialulu 发表于 2016-11-22 17:06
%macro jj(p,q);
   RR_&p._&q.=DPD&q./lag(DPD&p.);
%mend jj;
非常感谢呀,我这就去试试了
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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