LesezeichenAbonnierenRSS-Feed abonnieren
Katrin11
Calcite | Level 5

Hallo zusammen,

 

ich habe einen Datensatz vorliegen, der folgendermaßen aufgebaut ist:

 

Kennnummer des Konzerns        Kennnummer des Mutterkonzerns                 Bundesland des Konzerns

          1                                                           73636                                                             01

          3                                                             523                                                               03

        523                                                             -                                                                  05     

      73636                                                           -                                                                  06

 

Nun soll jeder Datensatz nicht nur das Bundesland des Konzerns, sondern auch das Bundesland des Mutterkonzerns enthalten.

Die Ausgabedatei sollte somit folgendermaßen aussehen:  

 

Kennnummer des Konzerns        Kennnummer des Mutterkonzerns          Bundesland des Konzerns    Bundesland des Mutterkonzerns

          1                                                           73636                                                       01                                           06

          3                                                             523                                                         03                                           05

        523                                                             -                                                            05                                            -

      73636                                                           -                                                            06                                            -

 

Ich finde im Netz leider kein passendes Problem.

Ich hoffe ihr könnt mir helfen. Vielen Dank im Voraus.

LG

Katrin11

                

 

2 ANTWORTEN 2
CKothenschulte
Obsidian | Level 7

Guten Morgen @Katrin11 ,

 

ich würde das mit einem MERGE lösen zunächst alle Mutterkonzerne extrahieren und anschließend anhand der Nummer verknüpfen.

Anbei mein Beispiel mit den Testdaten aus dem obigen Post:

data TESTDATEN;
input NummerKonzern NummerMutterKonzern BundesLand;
cards;
1 73636 01
3 523 03
523 . 05     
73636 . 06
;
run;

proc sort data=TESTDATEN;
 by NummerMutterKonzern;
run;

proc sort data=TESTDATEN out=MUTTERKONZERNE (where=(NummerMutterKonzern eq .));
 by NummerKonzern;
run;

data ERGEBNIS;
  merge TESTDATEN
        MUTTERKONZERNE (rename=(NummerKonzern=NummerMutterKonzern BundesLand=BundesLandMutterkonzern) drop=NummerMutterKonzern);
  by NummerMutterKonzern;
run;

proc sort data=ERGEBNIS;
  by NummerKonzern;
run;

Viel Erfolg!

andreas_lds
Jade | Level 19

Wenn das Dataset nicht zu groß ist, dann lässt sich das Problem mit eine Hash-Objekt lösen:

data have;
   length KN_Konzern KN_Mutterkonzern $ 10 BL_Konzern $ 2;
   input KN_Konzern KN_Mutterkonzern BL_Konzern;
   datalines;
1 73636 01
3 523 03
523 - 05 
73636 - 06
;
run;


proc sql noprint;
   create view work.HashBasis as
      select KN_Konzern as KN_Mutterkonzern, BL_Konzern as BL_Mutterkonzern
         from work.have
            where KN_Mutterkonzern = '-'
   ;
quit;


data work.want;
   set have;

   if 0 then set work.HashBasis;
   
   if _n_ = 1 then do;
      declare hash h(dataset: 'work.HashBasis');
      h.defineKey('KN_Mutterkonzern');
      h.defineData('BL_Mutterkonzern');
      h.defineDone();
      call missing(BL_Mutterkonzern);
   end;

   if h.find() ^= 0 then do;
      BL_Mutterkonzern = '-';
   end;
run;

Der View wird nur angelegt, um die Umbenennung der Variablen und die Where-Anweisung nicht in der Erstellung des Hash-Objekts erledigen zu müssen. Vielleicht ist die WHERE-Anweisung eh kompletter Unsinn, nämlich wenn es Konzerne gibt, die Kinder und Eltern haben.

sas-innovate-2024.png

Available on demand!

Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.

 

Register now!

Diskussionsstatistiken
  • 2 Antworten
  • 680 Aufrufe
  • 1 Kudo
  • 3 in Unterhaltung