I have the below dataset
data A;
Input CHANNEL $ AMOUNT ;
cards;
ABC 110
ABC 220
ABC 770
BBC 810
BBC 190
;
run;
May I know how to generate the below output with the above data? Thanks.
Channel Amount Percent
Proc means/summary/freq. Simple search on the SAS docs gives examples:
Hi scb,
As RW9 already stated in his post see the example link he provided.
But hereby a little bit of code to get you started:
Data A;
Input Channel $ Amount ;
cards;
ABC 110
ABC 220
ABC 770
BBC 810
BBC 190
;
run;
Proc SQL;
Create Table B AS
Select *,(Amount/SUM(Amount)) AS Percent format=6.2
From A
Group BY Channel;
Quit;
data A;
Input CHANNEL $ AMOUNT ;
cards;
ABC 110
ABC 220
ABC 770
BBC 810
BBC 190
;
run;
proc sql;
select *,AMOUNT/sum(AMOUNT) format=percent8.2
from a as x
group by CHANNEL;
quit;
data A;
Input CHANNEL $ AMOUNT ;
cards;
ABC 110
ABC 220
ABC 770
BBC 810
BBC 190
;
run;
DATA A2;
SET A;
CHAR_AMOUNT=AMOUNT;
RUN;
PROC FORMAT;
PICTURE PCTPIC low-high='000.0%';
RUN;
TITLE;
PROC TABULATE DATA=WORK.A2 OUT=TEST ;
CLASS CHANNEL CHAR_AMOUNT;
KEYLABEL PCTSUM="% within Channel";
VAR amount;
TABLE CHANNEL*CHAR_AMOUNT, (amount*(SUM*F=6. PCTSUM<AMOUNT*CHAR_AMOUNT>*F=PCTPIC.)) / RTS=20;
RUN;
Are you ready for the spotlight? We're accepting content ideas for SAS Innovate 2025 to be held May 6-9 in Orlando, FL. The call is open until September 25. Read more here about why you should contribute and what is in it for you!
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.