0
我有存儲名稱的字符串,例如一個宏變量:創建數據從宏變量設定SAS
%令操作=添加減法除法乘法;
我想將宏中的每個元素(顯示爲觀察值)轉置爲數據集變量。因此數據集應該如下所示:
<obs> <operation>
<1> add
<2> subtract
<3> divide
<4> multiply
我有存儲名稱的字符串,例如一個宏變量:創建數據從宏變量設定SAS
%令操作=添加減法除法乘法;
我想將宏中的每個元素(顯示爲觀察值)轉置爲數據集變量。因此數據集應該如下所示:
<obs> <operation>
<1> add
<2> subtract
<3> divide
<4> multiply
使用SCAN()函數。默認分隔符將適用於您的示例,否則您可以指定要使用的確切分隔符。
%let operation= add subtract divide multiply;
data want ;
length obs 8 operation $20 ;
do obs=1 by 1 until (operation=' ');
operation=scan("&operation",obs);
if operation ne ' ' then output;
end;
run;
我仍然不知道你有什麼和你想要的東西。這個例子是人爲的,但可能會給你一些關於語法等的幫助。
%let operation = add subtract multiply divide;
data operation;
length &operation 8;
array operation[*] &operation (2 3 10 4);
put 'NOTE: ' (operation[*])(=);
run;
*data set of names;
proc transpose data=operation(obs=0) out=names name=operation;
var &operation;
run;
proc print;
run;
感謝您的迴應,建立在我的問題上。假設我想要設置一個數組來指向'操作',我會按照以下方法來做:'set want(keep = operation);''array pointer(*)operation;' – Josh
宏指令中的單詞是指SAS數據集中的變量名? –
是的,他們是。我基本上把它當作一個「陣列」練習來對待。 – Josh