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

  A product can have three categories 'X','Y','Z'.
   Now if a customer has all three product X,Y,Z or X Y or X Z then he should be categorized as having X
     if he has Y or Z then he shouuld be categorized as Y
       if only Z then categoried as having only Z
      
Customer    product     category
A                      X            X
A                      Y        
A                      Z
B                      Y            Y
B                      Z
C                     X            X
C                     Z       
D                     Z            Z

1 ACCEPTED SOLUTION

Accepted Solutions
Steelers_In_DC
Barite | Level 11

I think this is what you are looking for but without a question it's hard to tell:

data have;

infile cards dsd;

input Customer $ product $;

cards;

A,X

A,Y

A,Z

B,Y

B,Z

C,X

C,Z

D,Z

;

run;

proc sql;

create table want as

select *,min(product) as category

from have

group by customer;

View solution in original post

3 REPLIES 3
PaigeMiller
Diamond | Level 26

What is your question?

--
Paige Miller
Jagadishkatam
Amethyst | Level 16

Please try

data have;

input Customer$    product$     ;

cards;

A                      X    

A                      Y    

A                      Z

B                      Y    

B                      Z

C                     X     

C                     Z     

D                     Z     

;

proc transpose data=have out=want;

by customer;

var product;

run;

data want2;

merge have want;

by customer;

if first.customer and cats(of col:) in ('XYZ','XY','XZ') then category='X';

if first.customer and cats(of col:)='YZ' then category='Y';

if first.customer and cats(of col:)='Z' then category='Z';

drop _name_ col:;

run;

Thanks,

Jag

Thanks,
Jag
Steelers_In_DC
Barite | Level 11

I think this is what you are looking for but without a question it's hard to tell:

data have;

infile cards dsd;

input Customer $ product $;

cards;

A,X

A,Y

A,Z

B,Y

B,Z

C,X

C,Z

D,Z

;

run;

proc sql;

create table want as

select *,min(product) as category

from have

group by customer;

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