LesezeichenAbonnierenRSS-Feed abonnieren
Swen
Explorer | Level 4

Liebe SAS-Community,

ich sitze gerade vor einem SAS-"Problem" und bin auf der Suche nach einer guten Lösungen.

Ich arbeite mit einem Panel-Datensatz der bisher Variablen zu den Jahren 2001 bis 2008 beinhaltet hat. Alle Variablen sind mit dem Präfix vj01 bis vj08 versehen. Viele Stellen in meinem Codeberg greifen auf DO-Schleifen zurück, da sich der Code sich zwischen den Jahren 2001 bis 2008 bis auf das Präfix der Variablen häufig nicht ändert.

Die DO-Schleifen habe ich bisher wie folgt erstellt:

%do i=1 %to 8 %by 1;

vj0&i.VARx = vj0&i.VARy + vj0&i.VARz;

%end;

Nun habe ich einen neuen Datensatz der zusätzlich die Jahre 2009 und 2010 enthält. Für 2010 ist der obige Code nicht zu gebrauchen, da "vj0&i" für 2010 nicht "vj10" sondern "vj010" erzeugt.

Mein bisheriger Lösungsansatz sieht wie folgt aus:

%do i=1 %to 10 %by 1;

%if    &i = 1    %then    %do;    %let vj = vj01;    %end;

......

%if    &i = 10    %then    %do;    %let vj = vj10;    %end;

&vj.VARx = &vj.VARy + &vj.VARz;

%end;

Hat jemand von euch vielleicht eine bessere Idee?

Viele Grüße

Swen Kuper

2 ANTWORTEN 2
Patrick
Opal | Level 21

Hi Swen

Ich nehme an der folgende code spricht fuer sich selbst:

%macro test;

  %local y;

  %do i=1 %to 10;

    %let y=%sysfunc(putc(&i,z2.));

    %put vj&y.VARx = vj&y.VARy + vj&y.VARz;

  %end;

%mend;

%test;

Thanks

Patrick

Swen
Explorer | Level 4

Hallo Patrick,

danke für die Idee. Damit werde ich etwas herumprobieren.

Grüße

Swen

Catch up on SAS Innovate 2026

Nearly 200 sessions are now available on demand in the Innovate Hub.

Watch Now →
Diskussionsstatistiken
  • 2 Antworten
  • 2456 Aufrufe
  • 3 Kudos
  • 2 in Unterhaltung