Hi Friend,
I am new to SAS and while solving the problem stuck in very basic step. I have three coloumn data is like Grade sub Grade and their average value. I have take average of Grade and Sub-grade. Thank you...
Data Example
| InputData | Output | ||||||
| Col 1 | Col 2 | Avg | Average of Avg | ||||
| A | A1 | 15 | Col 1 | Col 2 | Total | ||
| A | A2 | 13 | A | A1 | 15 | ||
| A | A3 | 16 | A2 | 13 | |||
| A | A4 | 11 | A3 | 16 | |||
| B | B1 | 12 | A4 | 11 | |||
| B | B2 | 11 | A Avg | 13.75 | |||
| B | B3 | 13 | B | B1 | 12 | ||
| C | C1 | 17 | B2 | 11 | |||
| C | C2 | 18 | B3 | 13 | |||
| C | C3 | 13 | B Avg | 12 | |||
| C | C4 | 20 | C | C1 | 17 | ||
| C | C5 | 20 | C2 | 18 | |||
| C3 | 13 | ||||||
| C4 | 20 | ||||||
| C5 | 20 | ||||||
| C Avg | 17.6 | ||||||
| Grand Total | 14.91666667 |
That's actually better done in either proc report or tabulate.
Possibly proc PRINT as well.
One way:
data have;
informat Col1 Col2 $5. Avg best5.;
input Col1 Col2 Avg ;
label
Col1 = "Col 1"
Col2 = "Col 2"
;
datalines;
A A1 15
A A2 13
A A3 16
A A4 11
B B1 12
B B2 11
B B3 13
C C1 17
C C2 18
C C3 13
C C4 20
C C5 20
run;
proc tabulate data=have;
class col1 col2;
var avg;
table col1*(col2 All='Group Avg') All='Grand Total',
avg=''*mean='Total'*f=best7.;
run;
Adjust the format for the desired number of decimals.
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.