2011-07-12 48 views
1

我想使用i作爲定義變量的一部分,如var_1,var_2,... var_16 也如果我有Rate1,Rate2, .... Rate15SAS我想使用迭代變量來聲明數據集上的變量

我怎麼能這樣對待:

有這種VAR_1 =率1(其值substitue 1)

Data s; 
     format Sr var_1-var_16 ; 
     Rate1=1; 
     Rate2=2; 
do i=1 to 15 by 1; 
      var_i=Ratei; 
    end; 
run; 
+0

你的問題不清楚。 SAS數據集不能包含數組;他們只有變量。你的數據集中有哪些變量? – itzy

+0

等待回覆 – Eng

回答

2

這是我最好的猜測,你問:你有16個變量,var_1, ..., var_16,並且您想將它們的每個值分配給另一組變量Rate1, ..., Rate16

這將工作:

data s; 
    array var{*} var_1-var_16; 
    array Rate{16}; 

    do i=1 to 15; 
    Rate{i} = var{i}; 
    end; 
drop i; 
run; 
0

這是一個使用宏的方法。就我個人而言,我發現解析%比使用數組更容易,但這只是我。

%macro foo; 
data s; 
    %do i = 1 %to 16; 
    var_&i = rate&i; 
    %end; 
run; 
%mend; 

%foo 
+0

不需要時使用宏。數組不是很難學習或使用,比任何一天的宏代碼都要乾淨。 –

+0

我沒有說他們很難學習或使用。與其他語言相比,我發現他們採用準列索引的方式相當笨拙。 –