LISTSERV at the University of Georgia
Menubar Imagemap
Home Browse Manage Request Manuals Register
Previous messageNext messagePrevious in topicNext in topicPrevious by same authorNext by same authorPrevious page (March 2001, week 3)Back to main SAS-L pageJoin or leave SAS-L (or change settings)ReplyPost a new messageSearchProportional fontNon-proportional font
Date:         Sun, 18 Mar 2001 17:01:29 GMT
Reply-To:     Roger Lustig <julierog@IX.NETCOM.COM>
Sender:       "SAS(r) Discussion" <SAS-L@LISTSERV.UGA.EDU>
From:         Roger Lustig <julierog@IX.NETCOM.COM>
Subject:      Re: Generate the third variable based on the categories of first
Content-Type: text/plain; charset=us-ascii

wei cheng wrote:

> Hi SAS-Lers,

> Sorry for the late Friday question.

No problem. We're open 24/7.

> If I have two categorical variables, > Eg. variable A has levels x, y, z > variable B has levels a,b,c,d

> and I need to create a third variable C based on them like:

> A B C > y b a2b2 > x b a1b2 > x d a1b4 > z a a3b1 > y c a2b3 > .......

> We don't know the levels of A and B in advance, but we need to have variable > C to have the levels of A and B.

Ya Huang already suggested a way of using FREQ and FORMAT to get the order statistics and then concatenate the formatted values. There are other implementations of the same approach, such as doing a FREQ on each variable individually, an output data set for each, each of those data sets becoming the CNTLIN data set to create a format. Then create your new variable by concatenating formatted values of each input variable. (This should be very easy to program into a macro, by the way.)

If you just need a unique value for C, one that does not reflect the order statistics of A and B, you can simply concatenate the two variables (if they're character) or use a transformation like

2**A * 3**B

if they're natural numbers.

Roger


Back to: Top of message | Previous page | Main SAS-L page