BookmarkSubscribeRSS Feed
Brandon16
Obsidian | Level 7
Hi,

My proc tabulate is summing up values, any idea how I stop this from happening please?
5 REPLIES 5
Astounding
PROC Star

Yes ... change the program.

 

If you show us the program, we can tell you what to change.  

Brandon16
Obsidian | Level 7
Data jw_all;
Set jw_sum
Gift_l
Supp_l;
Run;

Proc sort data jw_all; by final_var; run;

The variable final_var groups up as a total on my tabulate.
Astounding
PROC Star

Seriously?  

 

If PROC TABULATE is generating the wrong report, you need to show the PROC TABULATE step.

Brandon16
Obsidian | Level 7
Proc tabulate data jw_all missing;
Class final_var;
Var mnth1 mnth2 mnth3;
Table (jw_all=""),
(Mnth1="")
(Mnth2="")
(Mnth3="") / box="final"
Run;

Cynthia_sas
SAS Super FREQ

Hi:

  I'm not sure what you want. If you just want to get rid of the label for the SUM statistic, investigate the use of the KEYLABEL statement. If you mean you want some other statistic other than SUM, then investigate the use of the other KEYWORD statistics, like MIN, MAX, MEAN, MEDIAN, CSS, STD, PROBT, etc.

 

  PROC TABULATE is a summary/summarizing procedure that produces crosstabular results. It MUST put something, some calculated number in the crossing cells. If you only have a CLASS statement the default statistic to fill those cells is the N or count statistic. If you have a VAR statement, then the default statistic is the SUM statistic. If you have both a CLASS and a VAR statement in the same program, then you get the SUM statistic, usually, depending on how you write your TABLE statement.

 

  I see some errors in your code. instead of this

Proc tabulate data jw_all missing;

I would expect to see this

Proc tabulate data=jw_all missing;

(note the = sign and assuming that jw_all is the name of your dataset.

 

Next, instead of this:

Table (jw_all=""),
(Mnth1="")
(Mnth2="")
(Mnth3="") / box="final"

that shows the name of your data set jw_all in the TABLE statement and that there is not a semi-colon at the end of the TABLE statement, I would instead expect to see you use FINAL_VAR in the TABLE statement, like this:

 
Table (final_var=""),
(Mnth1="")
(Mnth2="")
(Mnth3="") / box="final";
 

  This syntax would put FINAL_VAR in the row dimension and the SUM of MNTH1, MNTH2 and MNTH3 in the column dimension with the box in the upper left-hand side of table containing the word "final"; Something like this -- shown with FAKE data:

fake_jw_all.png

Here is the code I used to create that table:

data jw_all;
  infile datalines;
  input final_var mnth1 mnth2 mnth3;
return;
datalines;
1 1 2 3
1 2 3 4
1 3 4 5
1 4 5 6
2 5 6 7
2 6 7 8
2 7 8 9
3 8 9 0
3 9 8 7
3 7 6 5
;
run;

proc tabulate data=jw_all;
class final_var;
var mnth1 mnth2 mnth3;
Table (final_var=""),
(Mnth1="")
(Mnth2="")
(Mnth3="") / box="final";
run;

Note that the syntax construct of mnth1=" " only serves to get rid of the column header with the variable NAME or label. It is NOT, as shown, getting rid of the keyword SUM for the name of the statistic being displayed in the data cells. That is the job of the KEYLABEL statement. However, if you're going to get rid of SUM, then I would suggest a revised program so that you had only this for your TABLE statement:

Table (final_var=""),
 Mnth1 Mnth2 Mnth3  / box="final";

Then, if you add the KEYLABEL statement, you will have the variable names as column headers without seeing the word SUM.

 

cynthia

 

sas-innovate-2024.png

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.

 

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
  • 5 replies
  • 5788 views
  • 1 like
  • 3 in conversation