have a customer_no and class. I would like to calculate ratio from the same column for each customer.
ratio= (number of secured/ total number classes)
customer_no class
1 unsecured
1 secured
1 secured
2 unsecured
2 secured
3 secured
3 unsecured
3 secured
3 unsecured
The output sample will be
customer_no ratio
1 0.666
2 0.50
3 0.50
.
.
.
9999
like this?
data have;
input customer_no$ class$;
datalines;
1 unsecured
1 secured
1 secured
2 unsecured
2 secured
3 secured
3 unsecured
3 secured
3 unsecured
;
proc sql;
create table want as
select customer_no
,sum(case when class='secured' then 1 else 0 end)/count(customer_no) as ratio
from have
group by customer_no;
quit;
like this?
data have;
input customer_no$ class$;
datalines;
1 unsecured
1 secured
1 secured
2 unsecured
2 secured
3 secured
3 unsecured
3 secured
3 unsecured
;
proc sql;
create table want as
select customer_no
,sum(case when class='secured' then 1 else 0 end)/count(customer_no) as ratio
from have
group by customer_no;
quit;
I think @PeterClemmensen gave you the right answer. Here is just another tool that may come in handy in this situation:
proc freq data=have;
tables customer_no * class / noprint out=counts;
run;
proc print data=counts;
var customer_no percent;
where class='secured';
run;
I agree, @Astounding, PROC FREQ would be my first choice too in this situation 🙂
April 27 – 30 | Gaylord Texan | Grapevine, Texas
Walk in ready to learn. Walk out ready to deliver. This is the data and AI conference you can't afford to miss.
Register now and lock in 2025 pricing—just $495!
Still thinking about your presentation idea? The submission deadline has been extended to Friday, Nov. 14, at 11:59 p.m. ET.
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.
Ready to level-up your skills? Choose your own adventure.