Merge über Format-Zusammenfassung

Liebe SAS-Redscope-Gemeinde,

angenommen, ich habe in einem SAS-Dataset ein Feld X, das Ausprägungen X_1, ... , X_N annimmt. Diese Ausprägungen sind über ein eigenes Format zusammengefasst worden, etwa

X1, ..., X_n1 = '1. Gruppe'

Xn1+1, ..., X_n2 = '2. Gruppe'

usw.

In einem zweiten SAS-Dataset gibt es ein Feld Y, das die o.g. Formatsausprägungen eindeutig als Zeilen beinhaltet, d.h. '1. Gruppe', '2. Gruppe', ... usw. sowie mögliche weitere Felder Y1, Y2, ...

Nun meine Frage: Ist es möglich, diese weiteren Felder per merge oder sql-join an die erste Tabelle anzureichern/anzuspielen?

Das Problem ist, dass die "echten" Daten nicht als by-Variable dienen können, da diese unterschiedlich sind, jedoch aber die Formate übereinstimmen.

Gibt es hierfür irgendeine Lösung?

Bin für jeden Tipp dankbar!

Gruß Roman Kolbe

System: SAS 9.1.3 Windows, SPD-Server

PUT-Funktion bei SQL-Join

Die einfachste Lösung ist wohl, in der Join-Klausel einer SQL-Anweisung die PUT-Funktion zu verwenden, um die unformatierten Werte in formatierte umzuwandeln.

proc format;
   
value gruppe
      
1-3 = 'niedrig'
      
4-6 = 'mittel'
      
7-9 = 'hoch';
run;

data formatted;
   
do gruppe = 'niedrig', 'mittel', 'hoch';
      x = rannor(
0);
      
output;
   
end;
run;

data unformatted;
   
do i=1 to 9;
      y = i + rannor(
0) * sqrt(i);
      
output;
   
end;
run;

proc sql noprint;
   
create table zusammen as
      
select *
      
from formatted, unformatted
      
where formatted.gruppe = put(unformatted.i,gruppe.);
quit;

Vielen Dank

Hallo Herr Mangold,

vielen Dank, ganz ähnlich läuft der Workaround, der in dem Artikel beschrieben ist. Mit der put-Anweisung kann man sich die Formatzuweisungen (temporär) rausschreiben lassen und darüber mergen/joinen.

Gruß Roman Kolbe

Workaround

Justamente habe ich folgenden Artikel entdeckt, der wohl einen netten "Workaround" für mein oben geschildertes Problem liefert:

http://www.ats.ucla.edu/stat/SAS/library/nesug99/bt150.pdf