BookmarkSubscribeRSS Feed
daveryBBW
Calcite | Level 5
I typically write this type of code using PROC SQL statements but I'm trying to see if there are other ways of doing it using more inherent SAS code.

I have a dataset that I want to summarize that has multiple recods per the class column that I'll be summarizing by. What I would like to do is conditionally summarize the data (sales) based on another column in the set.

Here is what I have:
classVar: what I will summarize by (the CLASS statement)
numVar1, numVar2 numVar3: the columns for the VAR statement
txtVar1: the column that I want to conditionally summarize by

This works to get totals (I know there are other nuances of writing the code):

proc summary data=mydata;
var numVar1 numVar2 numVar3;
class classVar;
types classVar; /* do not include the "total" row */
output out=myoutput
sum(numVar1)=smVar1
sum(numVar2)=smVar2
sum(numVar3)=smVar3
;
run;

Does anyone know if you can conditionally sum .. for example if txtVAr1 has two different options ("Yes" and "No" for example), can proc summary actually generate 6 output columns instead of just the 3 as seen above?

I've google'd this to no result so if anyone has any insight, it would be greatly appreciated. So far I'm coming to the conclusion that it's not possible and I just need to go back to PROC SQL and write the scripts myself.

Thanks!
Daniel
3 REPLIES 3
sbb
Lapis Lazuli | Level 10 sbb
Lapis Lazuli | Level 10
How about:
1) create additional "count" columns based on some variable condition, or
2) split your file into two files, perform two PROC SUMMARY executions under difference rqmts and then bring the two files back together (and maybe requiring a third PROC SUMMARY).

Scott Barry
SBBWorks, Inc.
ChrisNZ
Tourmaline | Level 20
Why don't you request[pre]class classVar txtVAr1 ;[/pre]to get the 6 values?
ballardw
Super User
> Why don't you request[pre]class classVar txtVAr1
> ;[/pre]to get the 6 values?

If you want only the cross product of the class variables but not the idividual summaries of each class variable use the NWAY option on the proc statement with this approach.

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!

What is Bayesian Analysis?

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.

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
  • 3 replies
  • 4280 views
  • 0 likes
  • 4 in conversation