Input:
PROMOTION TOTALS
TOTAL RECORDS 3,329
TOTAL RECORDS ACCEPTED 3,089
TOTAL RECORDS REJECTED 240
Output:
PROMOTION TOTALS
TOTAL RECORDS 3,329
TOTAL RECORDS ACCEPTED 3,089
TOTAL RECORDS REJECTED 240
Ratio 240/3089
data have;
input promotion totals;
cards;
1 3329
2 3089
3 240
;
data want;
set have end=eof;
output;
prev_total=lag(totals);
if eof then do ;
promotion=4;
totals=totals/prev_total;
output;
end;
run;
proc print data=want;run;
Or this:
data have;
input (PROMOTION TOTALS) (:$&30.);
cards;
TOTAL RECORDS 3,329
TOTAL RECORDS ACCEPTED 3,089
TOTAL RECORDS REJECTED 240
;
data want (drop=_:);
set have end=last;
_c=input(lag(totals),comma7.);
output;
if last then do;
totals=catx('/', totals,_c);
promotion='Ratio';
output;
end;
run;
proc print;run;
Regards,
Haikuo
Hi,
Try this...
data have;
input PROMOTION $25. TOTALS ;
cards;
TOTAL RECORDS 3329
TOTAL RECORDS ACCEPTED 3089
TOTAL RECORDS REJECTED 240
;
proc transpose data=have out=test;
id promotion;
var totals;
run;
data final;
set test;
Ratio=TOTAL_RECORDS_REJECTED/TOTAL_RECORDS_ACCEPTED;
run;
proc transpose data=final out=tt;
run;
Thanks,
Shiva
Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.
Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.
Learn how use the CAT functions in SAS to join values from multiple variables into a single value.
Find more tutorials on the SAS Users YouTube channel.