Unabhängig davon, ob Sie sie ersetzen möchten, ist es das, was proc format
tut in SAS - Wert auf einen anderen Wert zuordnet.
Hier ist, wie Sie das tun könnten. Beachten Sie, dass Sie die ursprünglichen 3 Variablen nicht wiederverwenden können (da sie numerisch sind), aber Sie könnten eine rename
und drop
Kombination verwenden, wenn Sie wirklich die gleichen Variablennamen wollten.
Mit einer format
Anweisung direkt würde auch das gleiche Ergebnis visuell (aber der zugrunde liegende Wert ist immer noch der numerische).
Data Have_1;
infile datalines missover;
input var1-var3;
datalines;
1111 1234 2222
2938 3849
1234 9388
2222 2222
;;;;
run;
Data Have_2;
input numval charval $;
datalines;
1111 a
1234 b
2222 c
2938 d
3849 e
9388 f
;;;;
run;
data for_Fmt;
set have_2;
start=numval;
label=charval; *could use rename for these but it makes the last bit more confusing to read;
retain fmtname 'CHARVALF' type 'N';
output;
if _n_=1 then do; *now define the 'other' value (hlo='o') for non-matched records;
hlo='o';
label=' ';
call missing(start); *unnecessary but avoids duplicate start values and less confusing output;
output;
end;
run;
proc format cntlin=for_fmt;
quit;
data want;
set have_1;
format var1-var3 CHARVALF1.; *option 1 - visual format only;
array var[3];
array varc[3] $; *option 2 - new set of vars w/char vals;
do _i = 1 to dim(Var);
varc[_i] = put(var[_i],CHARVALF1.);
end;
run;
Haben Sie wirklich brauchen, sie zu bekehren? Oder möchten Sie nur, dass sie mit benutzerfreundlicheren Beschreibungen drucken? Wenn letzteres dann so aussieht wie eine perfekte Anwendung für ein FORMAT. – Tom