Hello, I have a dataset where I am trying to categorize values of a variable into groups. Say I want to categorize as so: a, b, or c = factor1 d, e, or f = factor2 I have the following codes. %let factor1 = %str("a", "b", "c"); %let factor2 = %str("d", "e", "f"); etc. (say I have around 30 of these different factors) I grouped all these macros into one big list: %let allfactors = &factor1 &factor2 &factor3 etc I also have a list with all the categories I want: %let list = factor1 factor2 factor 3 etc. How do I create a code where I scan the place of the &factor and categorize the observation's value according to the place of the &list? For example, If an observation has value C, I want to categorize this as FACTOR1 = 1. I tried doing this: %macro test(data=); data &data._o; set &data.; %do i=1 %to %sysfunc(countw(&list)); if variable in: (%scan(&allfactors, &i)) then %scan(&list, &i)=1; %end; %mend test; %test(data=testdata); When I run this code, the entire macro for ALLFACTORS is considered. For example, the &i includes only value 'a' but I want the value of &i to be according to the &list placement (e.g. i=1 should be factor1 in LIST and &factor1 in ALLFACTORS. How should I change my code? Thank you, and apologies in advance if this is confusing.
... View more