SAS中是否可以将一列的值分配给另一列的宏变量
Is it possible in SAS to assign values from one column to a macro variables from another column
我可能已经找到了解决问题的方法。
我有两列 VarName 和 VarDate
我想将VarDate的值赋给VarName列的宏变量,而不是一一单独命名。
结果应该是 14 个具有赋值的宏变量。
例如:
如果我写 %put &A_10;它应该 return 我的价值 14/06/2020
如果我写 %put &A_11;它应该 return 我的价值 12/06/2020
如果我写 %put &G_11;它应该 return 我的价值 31/12/2021
data have;
input VarName $ VarDate :ddmmyy10.;
format VarDate ddmmyy10.;
datalines;
A_10 14/06/2020
A_11 12/06/2020
B_10 30/06/2020
B_11 30/06/2020
C_10 31/05/2020
C_11 29/05/2020
D_10 30/04/2020
D_11 30/04/2020
E_10 31/03/2020
E_11 31/03/2020
F_10 29/02/2020
F_11 28/02/2020
G_10 31/12/2021
G_11 31/12/2021
;
run;
它工作正常。登录结束评论:
data have;
input VarName $ VarDate :ddmmyy10.;
format VarDate ddmmyy10.;
datalines;
A_10 14/06/2020
A_11 12/06/2020
B_10 30/06/2020
B_11 30/06/2020
C_10 31/05/2020
C_11 29/05/2020
D_10 30/04/2020
D_11 30/04/2020
E_10 31/03/2020
E_11 31/03/2020
F_10 29/02/2020
F_11 28/02/2020
G_10 31/12/2021
G_11 31/12/2021
;
run;
data _null_;
set have;
call symput(VarName,put(VarDate,ddmmyys10.));
run;
%put &A_10.;
%put &A_11.;
.
.
.
.
/*results in the log:
4116 %put &A_10.;
14/06/2020
4117 %put &A_11.;
12/06/2020
*/
我可能已经找到了解决问题的方法。
我有两列 VarName 和 VarDate
我想将VarDate的值赋给VarName列的宏变量,而不是一一单独命名。
结果应该是 14 个具有赋值的宏变量。
例如:
如果我写 %put &A_10;它应该 return 我的价值 14/06/2020
如果我写 %put &A_11;它应该 return 我的价值 12/06/2020
如果我写 %put &G_11;它应该 return 我的价值 31/12/2021
data have;
input VarName $ VarDate :ddmmyy10.;
format VarDate ddmmyy10.;
datalines;
A_10 14/06/2020
A_11 12/06/2020
B_10 30/06/2020
B_11 30/06/2020
C_10 31/05/2020
C_11 29/05/2020
D_10 30/04/2020
D_11 30/04/2020
E_10 31/03/2020
E_11 31/03/2020
F_10 29/02/2020
F_11 28/02/2020
G_10 31/12/2021
G_11 31/12/2021
;
run;
它工作正常。登录结束评论:
data have;
input VarName $ VarDate :ddmmyy10.;
format VarDate ddmmyy10.;
datalines;
A_10 14/06/2020
A_11 12/06/2020
B_10 30/06/2020
B_11 30/06/2020
C_10 31/05/2020
C_11 29/05/2020
D_10 30/04/2020
D_11 30/04/2020
E_10 31/03/2020
E_11 31/03/2020
F_10 29/02/2020
F_11 28/02/2020
G_10 31/12/2021
G_11 31/12/2021
;
run;
data _null_;
set have;
call symput(VarName,put(VarDate,ddmmyys10.));
run;
%put &A_10.;
%put &A_11.;
.
.
.
.
/*results in the log:
4116 %put &A_10.;
14/06/2020
4117 %put &A_11.;
12/06/2020
*/