Hello,
Could you, please, help me on this subject.
I use the proc report to display my results and add some additionals informations
I have a table that comes as follows:
var var1 var2 var3
1 100 1000 10%
2 0 500 0%
3 100 2000 5%
I want to get a following table:
var var1 var2 var3
1 100 1000 10%
2 0 500 0%
3 100 2000 5%
TOTAL 200 3500 (200/3500)
Thank you
data have;
input var var1 var2;
cards;
1 100 1000
2 0 500
3 100 2000
;
run;
proc report data=have nowd;
columns var var1 var2 var3;
define var/display;
define var1/analysis sum;
define var2/analysis sum;
define var3/computed format=percent8.2;
compute var3;
var3=var1.sum/var2.sum;
endcomp;
rbreak after/summarize;
run;
Just do it in a datastep?
data want;
set have end=last;
retain sum_v1 sum_v2;
if last then do;
output;
var="Total";
var1=sum_v1;
var2=sum_v2;
var3=cats("(",put(sum_v1,best.),"/",put(sum_v2,best.),")");
output;
end;
else do;
sum_v1=sum(sum_v1,var1);
sum_v2=sum(sum_v2,var2);
output;
end;
run;
Thank you,
I want to calculate this value (200/3500) too; after sum var1 and sum var2
var var1 var2 var3
1 100 1000 10%
2 0 500 0%
3 100 2000 5%
TOTAL 200 3500 0.057
Oh, right, I didn;t get that from the post:
data want;
set have end=last;
retain sum_v1 sum_v2;
if last then do;
output;
var="Total";
var1=sum_v1;
var2=sum_v2;
var3=sum_v1/sum_v2;
output;
end;
else do;
sum_v1=sum(sum_v1,var1);
sum_v2=sum(sum_v2,var2);
output;
end;
run;
data have;
input var var1 var2;
cards;
1 100 1000
2 0 500
3 100 2000
;
run;
proc report data=have nowd;
columns var var1 var2 var3;
define var/display;
define var1/analysis sum;
define var2/analysis sum;
define var3/computed format=percent8.2;
compute var3;
var3=var1.sum/var2.sum;
endcomp;
rbreak after/summarize;
run;
Thank You
Hello,
I have another question please.
I want to calculate the ratio between var1 and the final sum of var2.
I tried to do that, but it does not work. Thank you
data have;
input var var1 var2;
cards;
1 100 1000
2 0 500
3 100 2000
;
run;
proc report data=have nowd;
columns var var1 var2 var3;
define var/display;
define var1/analysis sum ;
define var2/analysis sum;
define var3/computed ;
rbreak after/summarize;
compute var3;
var3=var1/var2.sum;
endcomp;
run;I want
data have;
input var var1 var2 VAR3;
cards;
1 100 1000 100/3500
2 0 500 0/3500
3 100 2000 100/3500
;
run;
I answer for my
data have;
input var var1 var2;
cards;
1 500 1000
2 0 500
3 100 2000
;
run;
proc report data=have nowd out=test;
columns var var1 var2 var3 ;
define var/display;
define var1/analysis sum;
define var2/analysis sum;
define var3/computed format=percent8.2;
COMPUTE BEFORE;
total+var2.SUM;
ENDCOMP;
COMPUTE var3;
var3=var1.sum/total;
ENDCOMP;
RBREAK AFTER /SUMMARIZE ;
RUN;
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!
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.