@hiteshchauhan1 wrote:
i want to achieve something that i have not tried before.
I have a dataset which i am using to make a format using proc format cntlin and data statement.
The issue is that the value which is assigned to the Label variable is what gets mapped on the basis of a defined key. And i have three values to map. I have 2 choices to do the same:
i) Either i make 3 different formats using the above mentioned methods because i have 3 values to map using the same key.
ii) If there is a way that i can have multiple labels and using some criteria i can tell SAS that if the key matches then assign this label value to some other variable.
is method ii) possible?
If yes, can please anyone explain that to me. Examples will be very much appriciated.
Thanks,
You can use multi-label formats expand your data as in this example.
/*sample data*/
data have;
input Year Area :$1. Profit;
cards;
2001 A 1
2002 A 2
2001 B 1
2001 C 3
2002 C 1
2001 E 4
2002 E 2
2001 F 3
2002 F 4
;;;;
run;
proc format;
value $area(notsorted multilabel)
'A','B','C' = 'A,B,C'
'A'='A' 'B'='B' 'C'='C' 'E'='E' 'F'='F'
'E','F'='E,F'
'A'-'Z'= 'All'
;
quit;
/* expand the data */
data haveV / view=haveV;
_obs_ + 1;
retain area;
retain _s1_ ' ';
set have;
retain _s2_ ' ';
run;
proc print;
run;
proc summary data=haveV nway;
by _obs_;
class area / mlf order=data preloadfmt;
format area $area.;
output out=expanded(drop=_type_ drop=_s:) idgroup(out(_s1_--_s2_)=);
run;
proc print;
run;
Have with by variable and makers Expanded
... View more