You cannot directly use transpose task in EG to solve your problem as you also need Total count column which is not coming in your input dataset.
Below mentioned is how to Transpose using SAS EG but again Total would not come.
Transpose Task
Set the following variables
Transpose Variable = count_casedesc
Group Analysis variable = NAME case_status
New column Name = CASE_DESC
How to get total, I have demonstrated using Base SAS code, you need to do it in EG using sql query and append task
DATA HAVE;
INPUT Name $ case_status $ Case_desc $ count_casedesc;
DATALINES;
Cynthua 04 Obhealth 1
Cynthua 04 Diab 1
Cynthua 04 Bp 1
Cynthua 05 Diab 1
Linda 04 Bp 1
Linda 04 Diab 1
;
PROC SQL;
CREATE TABLE TOTAL AS
SELECT Name , case_status , "TOTAL" AS Case_desc , SUM(count_casedesc) AS count_casedesc
FROM HAVE
GROUP BY Name , case_status ;
QUIT;
DATA HAVE1;
SET HAVE TOTAL;
RUN;
PROC SORT DATA=HAVE1;
BY NAME CASE_STATUS;
RUN;
PROC TRANSPOSE DATA=HAVE1 OUT=WANT(DROP=_NAME_) ;
BY NAME case_status ;
ID CASE_DESC;
VAR count_casedesc ;
RUN;
You cannot directly use transpose task in EG to solve your problem as you also need Total count column which is not coming in your input dataset.
Below mentioned is how to Transpose using SAS EG but again Total would not come.
Transpose Task
Set the following variables
Transpose Variable = count_casedesc
Group Analysis variable = NAME case_status
New column Name = CASE_DESC
How to get total, I have demonstrated using Base SAS code, you need to do it in EG using sql query and append task
DATA HAVE;
INPUT Name $ case_status $ Case_desc $ count_casedesc;
DATALINES;
Cynthua 04 Obhealth 1
Cynthua 04 Diab 1
Cynthua 04 Bp 1
Cynthua 05 Diab 1
Linda 04 Bp 1
Linda 04 Diab 1
;
PROC SQL;
CREATE TABLE TOTAL AS
SELECT Name , case_status , "TOTAL" AS Case_desc , SUM(count_casedesc) AS count_casedesc
FROM HAVE
GROUP BY Name , case_status ;
QUIT;
DATA HAVE1;
SET HAVE TOTAL;
RUN;
PROC SORT DATA=HAVE1;
BY NAME CASE_STATUS;
RUN;
PROC TRANSPOSE DATA=HAVE1 OUT=WANT(DROP=_NAME_) ;
BY NAME case_status ;
ID CASE_DESC;
VAR count_casedesc ;
RUN;
That looks an awful lot like a Report, especially with the "Total" you require.
If this is to be a dataset what will you do next with it? If the only thing is to print or display it then look at report tasks.
DATA HAVE; INPUT Name $ case_status $ Case_desc $ count_casedesc; DATALINES; Cynthua 04 Obhealth 1 Cynthua 05 Diab 1 Linda 04 Bp 1 Linda 04 Diab 1 ; run; proc transpose data=have out=temp(drop=_:); by name case_status; id case_desc; var count_casedesc; run; data want; set temp; total=sum(of _numeric_); run;
Join us for SAS Innovate 2025, our biggest and most exciting global event of the year, in Orlando, FL, from May 6-9. Sign up by March 14 for just $795.
What’s the difference between SAS Enterprise Guide and SAS Studio? How are they similar? Just ask SAS’ Danny Modlin.
Find more tutorials on the SAS Users YouTube channel.
Ready to level-up your skills? Choose your own adventure.