2014-09-30 4 views

ответ

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; 
+0

Ваши массивы должны быть отправлены от 15 до 49, а не 1--49. Код будет работать, но вы получите ненужные переменные 1--14 – Longfish

+0

Спасибо всем. Я пробовал метод do loop безуспешно - я просто пропустил. после того как я. – user2568648

+0

Массивный подход гораздо более уместен, чем макроподход в этом случае. –

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; 

 Смежные вопросы

  • Нет связанных вопросов^_^