BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
hfakoor
Fluorite | Level 6

Hello I havent used SAS in a while, and want to attain a basic programmer cert.

 

 

 

I'm trying to get this grouping to work from sashelp.cars but it is giving me all 128 observations in the output. I see repeated valuesfor the BY variable make

 

proc sort data=sashelp.cars out=work.temp2 (keep = make);
by make;
run;
proc print data = work.temp2;

 

 

any suggestions?

1 ACCEPTED SOLUTION

Accepted Solutions
RW9
Diamond | Level 26 RW9
Diamond | Level 26

The option is nodupkey.

If your familiar with SQL then use proc sql:

proc sql;
  create table WANT as
  select  MAKE,
          sum(MSRP) as RES
  from    SASHELP.CARS
  group by MAKE;
quit;

View solution in original post

4 REPLIES 4
RW9
Diamond | Level 26 RW9
Diamond | Level 26

Yes, by group just means to do something for each group specified, it doesn't remove any variables.  Perhaps you mean to sort the dataset using nodupkey:

proc sort data=sashelp.cars out=work.temp2 (keep = make) nodupkey;
  by make;
run;
proc print data = work.temp2;
run;

The nodupkey options will remove any subsequent observations from each by group.

hfakoor
Fluorite | Level 6

thanks so much-

 

If I wanted to sum msrp against Make grouping how would I go about that?

 

my code below is still giving me all 428 obs in the output.

 

proc sort data=sashelp.cars out=work.temp2 (keep = make msrp);
by make;
run;
proc print data = work.temp2;
sum msrp;
run;

hfakoor
Fluorite | Level 6
this seemed to work.

proc sort data=sashelp.cars out=work.temp2 (keep = make msrp) nodupekey;
by make;
run;
proc print data = work.temp2;
sum msrp;
run;

coming from the world of sql I was really looking for a way to just group the output and supress repeated by variables as opposed to supressing them in the output data itself.

Is there a way to do that?
RW9
Diamond | Level 26 RW9
Diamond | Level 26

The option is nodupkey.

If your familiar with SQL then use proc sql:

proc sql;
  create table WANT as
  select  MAKE,
          sum(MSRP) as RES
  from    SASHELP.CARS
  group by MAKE;
quit;

hackathon24-white-horiz.png

2025 SAS Hackathon: There is still time!

Good news: We've extended SAS Hackathon registration until Sept. 12, so you still have time to be part of our biggest event yet – our five-year anniversary!

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.

SAS Training: Just a Click Away

 Ready to level-up your skills? Choose your own adventure.

Browse our catalog!

Discussion stats
  • 4 replies
  • 1583 views
  • 2 likes
  • 2 in conversation