@andreas_lds wrote: There is an alternative to if and select: you could use a format. That way you would move the logic setting class to the format definition, some people think, that this is just code obfuscation, but you should consider it.
My rule-of-thumb: if you only do it once, do it in the code; otherwise move it to a format, document that, and Bob's your uncle.
Example for using a format:
data have;
input risktype $3.;
datalines;
FHO
FHW
FHZ
FHH
FHI
FHY
FDP
FFZ
FHX
FMD
FMP
FCL
FCZ
FLP
FAZ
FDA
FIA
XXX
;
proc format library=work;
invalue risktype
'FHO','FHW','FHZ' = 1
'FHH','FHI','FHY' = 2
'FDP','FFZ','FHX','FMD','FMP' = 3
'FCL','FCZ','FLP' = 5
'FAZ','FDA','FIA' = 6
other = 7
;
run;
data want;
set have;
class = input(risktype,risktype.);
run;
proc print data=want noobs;
run;
Result:
risktype class
FHO 1
FHW 1
FHZ 1
FHH 2
FHI 2
FHY 2
FDP 3
FFZ 3
FHX 3
FMD 3
FMP 3
FCL 5
FCZ 5
FLP 5
FAZ 6
FDA 6
FIA 6
XXX 7
... View more