Chcę utworzyć coś w SAS, które działa jak funkcja wyszukiwania Excel. Zasadniczo ustawiam wartości dla zmiennych makr var1
, var2
, ... i chcę znaleźć ich numer indeksu zgodnie z tabelą ref
. Ale dostaję następujące komunikaty w kroku danych.Zmienna makro jest niezainicjowana po wydaniu polecenia% let w sas
NOTE: Variable A is uninitialized.
NOTE: Variable B is uninitialized.
NOTE: Variable NULL is uninitialized.
Podczas drukowania zmiennych &num1
, &num2
, otrzymuję nic. Oto mój kod.
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;
mogę uzyskać poprawne wartości dla &num1
, &num2
.. gdybym wpisać varname='A'
w rachunku if-then
. A jeśli później zmienię oświadczenie z powrotem na varname=&var1
, nadal będę mógł uzyskać wymagane dane wyjściowe. Ale dlaczego tak jest? Nie chcę wprowadzać rzeczywistej wartości ciągu, a następnie zmienić ją z powrotem na zmienną makro, aby uzyskać wynik za każdym razem.
sugeruję zrobić wyszukiwania na http://www.lexjansen.com/ dla "lookup", aby znaleźć dokumenty SAS na wiele różnych sposobów, aby zrobić to w SAS. – DWal