我想在SAS中創建類似Excel查找函數的東西。基本上,我爲宏變量var1
,var2
,...設置了值,我想根據ref
表找到它們的索引號。但是我在數據步驟中收到以下消息。在sas中的%let語句後,宏變量未初始化
NOTE: Variable A is uninitialized.
NOTE: Variable B is uninitialized.
NOTE: Variable NULL is uninitialized.
當我打印變量&num1
,&num2
,我什麼也沒得到。這是我的代碼。
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;
我能得到正確的值&num1
,&num2
,..如果我在if-then
語句類型varname='A'
。如果我隨後將聲明更改回varname=&var1
,我仍然可以獲得所需的輸出。但爲什麼這樣呢?我不想輸入實際的字符串值,然後將其更改回宏變量以獲得每次結果。
我建議你做一個搜索在http://www.lexjansen.com/上進行「查找」,找到有關在SAS中執行此類事情的許多不同方法的SAS論文。 – DWal