i have a dataset
sno name m1 m2 s1 s2 e1 e1
1 A 20 30 25 45 26 27
1 B 25 32 55 20 41 25
1 C 27 40 28 44 46 37
1 D 29 50 35 42 36 42
i want output as
______________________________________________________________
| | maths | Science | English |
|SNo name | maths1| maths2 |science1 | science2 | english1| english2|
| | (1) | (2) | (3) |
-------------------------------------------------------------------------------------------------------------
|1 A 20 30 25 45 26 27 |
|1 B 25 32 55 20 41 25 |
|1 C 27 40 28 44 46 37 |
|1 D 29 50 35 42 36 42 |
-------------------------------------------------------------------------------------------------------------
i want 1st level header as (1) (2) (3)
2nd level header as maths1 maths2 |science1 science2 | english1 english2
3rd level headers as maths Science English
Use a split char:
proc report split="~"... /* Note the split=, you can put any character within the quotes */
column ....;
define sno / "SNo";
define name / "Name";
define m1/ "maths~maths1|maths2~(1)"; /* Note the tilde which indicates to line break */
define m2 / "Science~science1|science2~(2)";
...
Please try
data have;
input
sno name $ m1 m2 s1 s2 e1 e1;
cards;
1 A 20 30 25 45 26 27
1 B 25 32 55 20 41 25
1 C 27 40 28 44 46 37
1 D 29 50 35 42 36 42
;
run;
ods rtf file='~\new.rtf';
proc report data = have nowindows headline headskip split='/' style(header)={just=c};
column ('Sno' sno) ('Name' name) ("Maths/Maths1|Maths2/(1)" m1 m2 ) ( "science/science1|science2/(2)" s1 s2) ( "english/english|english/(3)" e1 e2);
define sno / '';
define name / '';
define m1 / '';
define m2 / '';
define s1 / '';
define s2 / '';
define e1 / '';
define e2 / '';
run;
ods rtf close;
Thanks,
Jag
i want output as
______________________________________________________________
| | maths | Science | English |
|------------------------------------------------------------------------------------------------------------|
|SNo name | maths1| maths2 |science1 | science2 | english1| english2 |
|------------------------------------------------------------------------------------------------------------|
| | (1) | (2) | (3) |
|------------------------------------------------------------------------------------------------------------|
|1 A 20 30 25 45 26 27 |
|1 B 25 32 55 20 41 25 |
|1 C 27 40 28 44 46 37 |
|1 D 29 50 35 42 36 42 |
-------------------------------------------------------------------------------------------------------------
This is tablar format
1st heading above colunm will be (1) (2) (3)
above it seperate cels for Above M1 Maths1 and above M2 Maths2 so on
and above it maths science and englesh
i used | on to distingulish cells
As far as I am aware you cant have "across" labels, which is what the maths, science, and (1) (2), over *and* under other labels, only above column labels. Then point being that information applies to all deceding column headers. You could however fake it pretty easily:
data have;
input
sno name $ m1 m2 s1 s2 e1 e2;
cards;
1 A 20 30 25 45 26 27
1 B 25 32 55 20 41 25
1 C 27 40 28 44 46 37
1 D 29 50 35 42 36 42
;
run;
data inter (keep=sno name m s e);
set have;
length m s e $25;
m=put(m1,2.)||right(put(m2,16.));
s=put(s1,2.)||right(put(s2,16.));
e=put(e1,2.)||right(put(e2,16.));
run;
ods pdf file="s:\temp\rob.pdf" style=statistical;
proc report data=inter split="~" nowd;
column (' ' sno name) ('maths' m) ('science' s) ('english' e);
define sno / "SNo" style(header)=[just=l];
define name / "name" style(header)=[just=r];
define m / "maths1|maths2~(1)" style(header)=[just=c];
define s / "science1|science2~(2)" style(header)=[just=c];
define e / "english1|english2~(3)" style(header)=[just=c];
run;
ods _all_ close;
Don't miss out on SAS Innovate - Register now for the FREE Livestream!
Can't make it to Vegas? No problem! Watch our general sessions LIVE or on-demand starting April 17th. Hear from SAS execs, best-selling author Adam Grant, Hot Ones host Sean Evans, top tech journalist Kara Swisher, AI expert Cassie Kozyrkov, and the mind-blowing dance crew iLuminate! Plus, get access to over 20 breakout sessions.
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.