Community deutschsprachiger SAS-Anwender und -Programmierer

Antworten
Dies ist eine offene Gruppe. Melden Sie sich an und klicken Sie auf die Schaltfläche „Gruppe beitreten“, um Mitglied zu werden und damit zu beginnen, Beiträge in dieser Gruppe zu veröffentlichen.
Highlighted
New Contributor
Beiträge: 2
Do-Schleife - Lösung gesucht

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

Respected Advisor
Beiträge: 4.137
Re: Do-Schleife - Lösung gesucht

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

New Contributor
Beiträge: 2
Re: Do-Schleife - Lösung gesucht

Hallo Patrick,

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

Grüße

Swen