sas使用do循环创建变量

sas使用do循环创建变量,sas,do-loops,Sas,Do Loops,我有以下代码: 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压缩到49?您可以通过两条路径 1.宏观 %macro do_loop;

我有以下代码:

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压缩到49

您可以通过两条路径

1.宏观

%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.2阵列

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.宏观

%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.2阵列

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.宏观

%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.2阵列

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.宏观

%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.2阵列

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;

我不会使用宏的。使用数组,但显式地将索引设置为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;

我不会使用宏的。使用数组,但显式地将索引设置为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;

我不会使用宏的。使用数组,但显式地将索引设置为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;

我不会使用宏的。使用数组,但显式地将索引设置为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;

您的数组需要从15到49,而不是1到49。代码可以工作,但最终会得到不需要的变量1-14谢谢。我曾尝试过do循环方法,但没有成功——我只是错过了这个过程。在本例中,数组方法比宏方法更合适。数组需要从15--49开始,而不是从1--49开始。代码可以工作,但最终会得到不需要的变量1-14谢谢。我曾尝试过do循环方法,但没有成功——我只是错过了这个过程。在本例中,数组方法比宏方法更合适。数组需要从15--49开始,而不是从1--49开始。代码可以工作,但最终会得到不需要的变量1-14谢谢。我曾尝试过do循环方法,但没有成功——我只是错过了这个过程。在本例中,数组方法比宏方法更合适。数组需要从15--49开始,而不是从1--49开始。代码可以工作,但最终会得到不需要的变量1-14谢谢。我曾尝试过do循环方法,但没有成功——我只是错过了这个过程。在这种情况下,数组方法比宏方法更合适。