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;
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9.
Early bird rate extended! Save $200 when you sign up by March 31.
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.