Ich möchte etwas in SAS erstellen, die wie eine Excel-Lookup-Funktion funktioniert. Grundsätzlich setze ich die Werte für die Makrovariablen var1
, var2
, ... und ich möchte ihre Indexnummer nach der Tabelle ref
finden. Aber ich bekomme folgende Daten im Datenschritt.Makro-Variable ist nicht initialisiert nach% let-Anweisung in sas
NOTE: Variable A is uninitialized.
NOTE: Variable B is uninitialized.
NOTE: Variable NULL is uninitialized.
Wenn ich die Variablen drucken &num1
, &num2
, bekomme ich nichts. Hier ist mein Code.
data ref;
input index varname $;
datalines;
0 NULL
1 A
2 B
3 C
;
run;
%let var1=A;
%let var2=B;
%let var3=NULL;
data temp;
set ref;
if varname=&var1 then call symput('num1',trim(left(index)));
if varname=&var2 then call symput('num2',trim(left(index)));
if varname=&var3 then call symput('num3',trim(left(index)));
run;
%put &num1;
%put &num2;
%put &num3;
Ich kann die richtigen Werte für &num1
bekommen, &num2
, .. wenn ich varname='A'
in der if-then
Anweisung geben. Und wenn ich die Anweisung später wieder auf varname=&var1
ändere, kann ich immer noch die benötigte Ausgabe bekommen. Aber warum ist es so? Ich möchte den tatsächlichen Zeichenfolgenwert nicht eingeben und dann zurück in Makrovariable ändern, um das Ergebnis jedes Mal zu erhalten.
Ich würde vorschlagen, dass Sie eine Suche auf http://www.lexjansen.com/ für "lookup", um SAS-Papiere über die vielen verschiedenen Möglichkeiten zu finden, solche Dinge in SAS zu tun. – DWal