DATA Step, Macro, Functions and more

Need suggestion and help.

Reply
Contributor
Posts: 22

Need suggestion and help.

i have a credit card data which i have transposed in the following format.The values shows the status of that account in that period of time.

aaa-                    active account authorise

d1-d4-                 delinquent

lep,lwp,lrp,isp-   legal

below is the sample.

data check;

infile datalines;

input acc_id  sta_dt1 $6.  sta_dt2 $6. sta_dt3 $6.  sta_dt4 $6. sta_dt5 $6. 

sta_dt6 $6. sta_dt7 $6.  sta_dt8 $6. sta_dt9 $6.  sta_dt10 $6.

sta_dt11 $6. sta_dt12 $6.  sta_dt13 $6. sta_dt14 $6.  sta_dt15 $6.;

datalines;

1111   aaa   aaa   aaa   d1    d2    d3    aaa   aaa   aaa   d1    d2     d3   aaa    d1    aaa

1112   d1    aaa   aaa   d1    aaa   d3    aaa   aaa   aaa   d1    d2     d3   aaa    aaa   aaa

1113   aaa   aaa   aaa   d1    d2    d3    aaa   aaa   aaa   d1    d2     d3   aaa    aaa   aaa

1114   aaa   aaa   aaa   d1    d2    d3    d4    aaa   aaa   d1    d2     d3   aaa    aaa   d1

1115   aaa   aaa   aaa   d1    d2    d3    aaa   aaa   aaa   d1    d2     d3   aaa    aaa   aaa

1116   d1    aaa   aaa   aaa   d1    d2    aaa   aaa   aaa   d1    d2     d3   aaa    aaa   aaa

1117   aaa   aaa   aaa   d1    d2    d3    aaa   aaa   aaa   d1    d2     d3   aaa    aaa   aaa

1118   lep   lep   lwp   lwp   lwp   lwp   lwp   lwp   lwp   lwp   lwp    lrp  lrp    isp   isp

1119   aaa   aaa   aaa   d1    d2    d3    aaa   d1    aaa   d1    d2     d3   aaa    aaa   aaa

1122   d1    aaa   aaa   d1    d2    d3    aaa   aaa   aaa   d1    d2     d3   aaa    aaa   aaa

1123   aaa   aaa   aaa   d1    d2    d3    aaa   aaa   aaa   d1    d2     d3   aaa    aaa   aaa

1124   d1    aaa   aaa   d1    d2    d3    aaa   aaa   aaa   d1    d2     d3   aaa    aaa   aaa

1118   d1    aaa   aaa   d1    d2    d3    aaa   aaa   aaa   d1    d2     aaa  aaa    aaa   aaa

1119   aaa   aaa   aaa   d1    d2    d3    aaa   aaa   aaa   d1    d2     d3   aaa    aaa   aaa

1122   d1    aaa   aaa   d1    d2    d3    aaa   aaa   aaa   d1    d2     d3   aaa    aaa   aaa

1123   aaa   aaa   aaa   d1    d2    d3    aaa   d1    aaa   d1    d2     d3   aaa    aaa   aaa

1124   d1    aaa   aaa   d1    d2    d3    aaa   aaa   aaa   d1    d2     d3   aaa    aaa   d1

1118   d1    aaa   aaa   d1    d2    d3    aaa   aaa   aaa   d1    d2     d3   aaa    aaa   aaa

1119   aaa   aaa   aaa   d1    d2    d3    aaa   aaa   aaa   d1    d2     d3   aaa    aaa   aaa

1122   d1    aaa   aaa   d1    d2    d3    aaa   aaa   aaa   d1    d2     d3   aaa    aaa   aaa

1123   aaa   aaa   aaa   d1    d2    d3    aaa   aaa   aaa   d1    d2     d3   aaa    aaa   aaa

1124   d1    aaa   aaa   d1    d2    d3    aaa   aaa   aaa   d1    d2     d3   d4     aaa   aaa

run;

1=what i want is to flag those account when their status are changed from ['(d1-d4)']to ['aaa']and ['aaa' ] to '(d1-d4)'

and ['aaa'or '(d1-d4)'] to (lep,or lrp,or isp )

2=want the cycle_counts  as how many times it changes in 7 years of times(here it is 15 month.) as i will apply the code.

  1.['(d1-d4)']to ['aaa']

  2.['aaa' ] to '(d1-d4)'

  3.['aaa'or '(d1-d4)'] to (lep,or lrp,or isp ).

  4.no changes as it may be in aaa or (lep or lrp or isp).

Respected Advisor
Posts: 4,928

Re: Need suggestion and help.

I would start with the following steps to count the transitions of all types :

proc format;

value $sta

"aaa" = "A"

"d1", "d2", "d3", "d4" = "D"

"lep", "lwp", "lrp", "isp" = "L";

run;

data trans;

length trans $2;

set check;

array sta{*} sta_dt:;

do dt = 2 to dim(sta);

    trans = cats(put(sta{dt-1}, $sta.), put(sta{dt}, $sta.));

    output;

    end;

keep acc_id dt trans;

run;

proc sql;

create table transCounts as

select acc_id, trans, count(dt) as n

from trans

group by acc_id, trans;

quit;

And then do whatever summary you need on dataset transCounts

PG

PG
Ask a Question
Discussion stats
  • 1 reply
  • 179 views
  • 0 likes
  • 2 in conversation