BookmarkSubscribeRSS Feed
Q1983
Lapis Lazuli | Level 10

data have;

infile datalines;

input Teammate $ Area Branch $ Opened Inactive ;

return;

datalines;

 

Richardson 17500 Sims 52 2

Richardson 17522 Heigth 62 2

Shaw 17500 Sims 22 6

Richardson 17500 Sims 120 1

Shaw 1500 Hamphire 12 1

James 17500 Sims 50 40

Phelps 17500 Handley 12 6

;run;

Proc Report data = have NOWD Wrap style(summary)=Header;

column Teammate Area Branch Opened Inactive pct_inact ;

define Teammate /group style(column)=[cellwidth=100pt] "Teammate";

define Area / group style (column)=[cellwidth=100pt] "Center";

define Branch /group style(column)=[cellwidth=90pt];

define Opened / sum style(column)=[cellwidth=90pt] 'Total Opened For Period: ' ;

define Inactive / sum style(column)=[cellwidth=90pt] 'Total Inactive For Period: ' ;

define pct_inact /computed f=percent8.2 "%Inactive for preiod" style(column)=[cellwidth=90pt];

compute pct_inact;

pct_inact =_c5_ / _c4_; /*total% inactive*/

endcomp;

rbreak after / summarize style (summary)= Header;

compute after;

Teammate = 'Total';

endcomp;

run;

 

When running the code why am I NOT getting all of the Teammates(first column)??  The 4th and 6th columns are blank.  The report is to be based on Teammate

 

4 REPLIES 4
PaigeMiller
Diamond | Level 26

When I run your code, I am not seeing the 4th and 6th columns as blank. They have numbers in them.

 

Teammate Center Branch Total Opened For Period: Total Inactive For Period: %Inactive for preiod
James 17500 Sims 50 40 80.00%
Phelps 17500 Handley 12 6 50.00%
Richards 17500 Sims 172 3 1.74%
  17522 Heigth 62 2 3.23%
Shaw 1500 Hamphire 12 1 8.33%
  17500 Sims 22 6 27.27%
Total     330 58 17.58%
--
Paige Miller
Q1983
Lapis Lazuli | Level 10

Exactly, my question was, why are we not seeing the name of the Teammate populated?  What must I do with proc report to get the actual Teammate name to display??

ed_sas_member
Meteorite | Level 14

Hi @Q1983 

Here is a way to handle that (cf. compute bloc). 

I have also added the %nrstr() function to mask the % in your label and avoid a warning in the log.

NB: all rows were not populated with the name of the Teammate because it is defined as a GROUP variable in the DEFINE statement.

This group allow to compute summary statistics so it is a better way to display the report

 

 

proc report data=have NOWD Wrap style(summary)=Header;
	
	column Teammate Area Branch Opened Inactive pct_inact;
	
	define Teammate /group style(column)=[cellwidth=100pt] "Teammate";
	define Area / group style (column)=[cellwidth=100pt] "Center";
	define Branch /group style(column)=[cellwidth=90pt];
	define Opened / sum style(column)=[cellwidth=90pt] 'Total Opened For Period: ';
	define Inactive / sum style(column)=[cellwidth=90pt] 'Total Inactive For Period: ';
	define pct_inact /computed f=percent8.2 %nrstr("%Inactive for period") style(column)=[cellwidth=90pt];

	rbreak after / summarize style (summary)=Header;
	
	compute pct_inact;
		pct_inact=_c5_ / _c4_; /*total% inactive*/
	endcomp;
	
	compute Teammate;
		if Teammate NE ' ' then hold=Teammate ;
		if Teammate EQ ' ' then Teammate=hold ;
	endcomp;
	
	compute after;
		Teammate='Total';
	endcomp;

run;

 

PaigeMiller
Diamond | Level 26

I have also added the %nrstr() function to mask the % in your label and avoid a warning in the log.

 

You could also just change the double-quotes to single quotes.

--
Paige Miller

sas-innovate-2024.png

Available on demand!

Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.

 

Register now!

How to Concatenate Values

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.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 4 replies
  • 356 views
  • 3 likes
  • 3 in conversation