Ich habe SAS-Code unten und kann dann ausgeführt werden. Die Herausforderung ist, dass ich sie so oft wiederholen muss und es sieht wirklich peinlich aus. Ich brauche Trans1-Tran2, TransOut1-TransOut100, und die BBB, AAA, VCS sind benutzerdefiniert und kein Trend zu folgen.SAS-Code, Loop-Index und mehr, wie zu vereinfachen
%transform(Trans1,BBB,TransOut1);
%transform(Trans2,AAA,TransOut2);
%transform(Trans3,VCS,TransOut3);
%transform(Trans4,REM,TransOut4);
Ich denke kombinieren Schleife tun und Scannen in meinem Code, aber ich weiß nicht, wie Index im Variablennamen verwenden, so kann ich nicht meine Idee testen. Beispielcode, der nicht ausgeführt werden kann.
%let second= BBB, AAA, VCS,REM;
%macro trans;
%do i=1 %to 4;
%transform(Trans(i)?,%scan(&second.,&i),TransOut(i);
%end;
%mend;
poste ich einige Testcode unten:
%macro test(data, var);
Data &data.;
Fname= "John";
Phone= 123;
City="Chicago";
Zip=65456;
keep &var.;
Run;
%mend;
%test(test1, Phone);
%test(test2, Fname);
%test(test3, City);
%test(test4, Zip);
'Katzen' ist viel besser für die tatsächlicher Aufruf führt als alle Komprimierungsfunktionen und '||' -Operatoren aus, aber ansonsten ist das gut. – Joe
Ja, Sie haben Recht. Ich werde den Code entsprechend bearbeiten. – Jetzler