Hello all,
I have this dataset named 'foreport' which will be used in proc report:
var1 var2 count var4 var5 var6 var7 group
one 1
mn3 u1 15 5 5 4 1 1
mn3 u2 12 8 4 10 20 1
mn3 u3 2 1 8 9 6 1
1
mn6 u1 11 2 5 10 8 1
mn6 u2 6 3 4 19 5 1
mn6 u3 5 6 2 6 3 1
two 2
mn3 u1 15 5 5 4 1 2
mn3 u2 15 7 5 4 1 2
mn3 u3 15 5 5 4 1 2
2
mn6 u1 15 5 5 4 1 2
mn6 u2 15 5 5 4 1 2
mn6 u3 15 5 5 4 1 2
three 3
mn3 u1 15 5 5 4 1 3
mn3 u2 15 5 5 4 1 3
mn3 u3 15 5 5 4 1 3
3
mn6 u1 15 5 5 4 1 3
mn6 u2 15 5 5 4 1 3
mn6 u3 15 5 5 4 1 3
What I want to get is table 'Want' displayed in the attached file (PS: I need to remove blank line between '__________' and 'month 3').
I tried with this program which need to be a bit modified to get the required result. It procudes the table 'Get' diplayed in the attached file
ods rtf file = "&path\file.rtf" STARTPAGE=no style=journal ;
ods escapechar='^';
proc report data = foreport nowindows spacing = 1 headline headskip split = "|" ;
columns var1 var2 count var3 var4 var5 var6;
by grp;
define var1 /left group order=data "A" style(header)=[just=l font_weight=bold] style(column)=[just=l width=15%];
define var2 /center display "B" style(header)=[just=c font_weight=bold] style(column)=[width=10%] ;
define count /center display "C" style(header)=[just=c font_weight=bold] style(column)=[width=8%] ;
define var3 /center display "D" style(header)=[just=c font_weight=bold] style(column)=[width=8%] ;
define var4 /center display "E" style(header)=[just=c font_weight=bold] style(column)=[width=18%] ;
define var5 /center display "F" style(header)=[just=c font_weight=bold] style(column)=[width=18%];
define var6 /center display "G" style(header)=[just=c font_weight=bold] style(column)=[width=21%] ;
compute after var1 /
style={protectspecialchars=off};
line '\brdrt\brdrs ';
endcomp;
run;
ods _all_ close;
Values inside the table are not important for me , I need just the layout.
I need to have a line under 'one' ,'two' and 'three' and not like in the table 'Get'.
I need to remove headers reproduced because the by statement (I need only one header from the beginning).
Any suggestion please ?
1. Create a new variable to differentiate 'one, two, three, four, etc.' from others. for example, if col1 in ('one' 'two' 'three' 'four') then cat=1; else cat=2;
2. Add new variable 'cat' into column statement before col1;
3. define cat /order order=data noprint;
4. compute after cat /
Good luck
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 the difference between classical and Bayesian statistical approaches and see a few PROC examples to perform Bayesian analysis in this video.
Find more tutorials on the SAS Users YouTube channel.