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

sas-innovate-2024.png

Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.

Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.

 

Register now!

Diskussionsstatistiken
  • 2 Antworten
  • 1298 Aufrufe
  • 3 Kudos
  • 2 in Unterhaltung