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;
Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!
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.