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

I'm new to SAS and have a simple dataset called ORIG_DATA from which I need to create a new dataset SUMMARY which shows the total by Salesman_ID by Day_ID

In essence the SUMMARY output should look like this where the numbers are the sum of totals.

Salesman_ID|Day_1|Day_2

|30   |40 

|60   |0 

|20   |70

In SQL, I'd do

Select salesman_id, sum(case when day_id=1 then total else 0 end) as day_1, sum(case when day_id=2 then total else 0 end) as day_2 from ORIG_DATA group by salesman_id

but for this problem I'm not allowed to use proc sql. How else can I do this in SAS? Haven't the foggiest at the moment. apologies for nontable format

ORIG_DATA as below

Day_ID|Salesman_ID|Other_field|total 

1   ||R000  |10 

1   ||R002  |20 

2   ||R000  |10 

2   ||R004  |30 

1   ||R002  |20 

1   ||R000  |40 

1   ||R004  |0 

2   ||R003  |40 

2   ||R004  |10 

1   ||R002  |20 

2   ||R002  |20

1 ACCEPTED SOLUTION

Accepted Solutions
AskoLötjönen
Quartz | Level 8

data have;

input Day_ID Salesman_ID $ Other_field $ total ;

cards;

1   A  R000  10

1   A  R002  20

2   A  R000  10

2   A  R004  30

1   B  R002  20

1   B  R000  40

1   B  R004  0

2   C  R003  40

2   C  R004  10

1   C  R002  20

2   C  R002  20

;

proc SUMMARY sum DATA=HAVE  nway;

  CLASS Salesman_ID Day_ID;

  VAR total;

  OUTPUT sum=total OUT=TMP1(DROP=_freq_ _type);

RUN;

PROC TRANSPOSE DATA=TMP1 OUT=SUMMARY(DROP=_NAME_) PREFIX=day_;

  VAR TOTAL;

  ID  day_id;

  BY  Salesman_ID;

RUN;

View solution in original post

2 REPLIES 2
AskoLötjönen
Quartz | Level 8

data have;

input Day_ID Salesman_ID $ Other_field $ total ;

cards;

1   A  R000  10

1   A  R002  20

2   A  R000  10

2   A  R004  30

1   B  R002  20

1   B  R000  40

1   B  R004  0

2   C  R003  40

2   C  R004  10

1   C  R002  20

2   C  R002  20

;

proc SUMMARY sum DATA=HAVE  nway;

  CLASS Salesman_ID Day_ID;

  VAR total;

  OUTPUT sum=total OUT=TMP1(DROP=_freq_ _type);

RUN;

PROC TRANSPOSE DATA=TMP1 OUT=SUMMARY(DROP=_NAME_) PREFIX=day_;

  VAR TOTAL;

  ID  day_id;

  BY  Salesman_ID;

RUN;

wanderingmanifold
Calcite | Level 5

thanks very much

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.

SAS Training: Just a Click Away

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

Browse our catalog!

Discussion stats
  • 2 replies
  • 1707 views
  • 0 likes
  • 2 in conversation