我有以下代码:
data DEFBIS.Taux_fec_2006_2010;
set DEFBIS.Taux_fec_2006_2010;
Taux_15 = 1000 * N_15 / (5 * P_15);
Taux_16 = 1000 * N_16 / (5 * P_16);
...
Taux_49 = 1000 * N_49 / (5 * P_49);
run;
如何使用do
中的i = 15 to 49
语句缩小此代码?
答案 0 :(得分:2)
你可以走两条路......
1.Macro
%macro do_loop;
data DEFBIS.Taux_fec_2006_2010;
set DEFBIS.Taux_fec_2006_2010;
%do i = 15 %to 49;
Taux_&i. = 1000 * N_&i. / (5 * P_&i.);
%end;
run;
%mend do_loop;
%do_loop;
2.arrays
data DEFBIS.Taux_fec_2006_2010;
set DEFBIS.Taux_fec_2006_2010;
array taux (*) taux_1 -- taux_49;
array N (*) N_1 -- N_49;
array P (*) P_1 -- P_49;
do I = 15 to 49;
Taux (I)= 1000 * N (I)/ (5 * P (I));
end;
run;
答案 1 :(得分:1)
我不会使用宏。使用数组但显式将索引设置为15到49。
data DEFBIS.Taux_fec_2006_2010;
set DEFBIS.Taux_fec_2006_2010;
array taux(15:49) taux_15-taux_49;
array nn(15:49) n_15-n_49;
array pp(15:49) p_15-p_49;
do i=15 to 49;
Taux(i) = 1000 * nn(i)/ (5 * pp(i));
end;
run;